diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index 24106c028e..fa2d09c0e7 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -19,42 +19,31 @@ jobs: INVENTREE_STATIC_ROOT: ./static steps: - - uses: actions/checkout@v2 - - name: Get Current Translations - run: | - git fetch - git checkout origin/l10 -- `git ls-tree origin/l10 -r --name-only | grep ".po"` - git reset - - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install -y gettext - pip3 install invoke - invoke install - - name: Make Translations - run: | - invoke translate - - name: stash changes - run: | - git stash - - name: Checkout Translation Branch - uses: actions/checkout@v2.3.4 - with: - ref: l10 - - name: Commit files - run: | - git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git checkout stash -- . - git reset - git add "*.po" - git commit -m "updated translation base" - - name: Push changes - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: l10 + - name: Checkout Code + uses: actions/checkout@v2 + - name: Set up Python 3.7 + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y gettext + pip3 install invoke + invoke install + - name: Make Translations + run: | + invoke translate + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git checkout -b l10_local + git add "*.po" + git commit -m "updated translation base" + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: l10 + force: true diff --git a/.github/workflows/welcome.yml b/.github/workflows/welcome.yml index 5b0e3a7256..4501209ff9 100644 --- a/.github/workflows/welcome.yml +++ b/.github/workflows/welcome.yml @@ -9,6 +9,9 @@ on: jobs: run: runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: - uses: actions/first-interaction@v1 with: diff --git a/.gitignore b/.gitignore index 6532442dc7..56d4180482 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,6 @@ maintenance_mode_state.txt # plugin dev directory plugins/ + +# Compiled translation files +*.mo diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0677e61de4..82cfa4e9e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,6 +44,31 @@ The HEAD of the "stable" branch represents the latest stable release code. - When approved, the branch is merged back *into* stable, with an incremented PATCH number (e.g. 0.4.1 -> 0.4.2) - The bugfix *must* also be cherry picked into the *master* branch. +## Environment +#### Target version +We are currently targeting: +| Name | Minimum version | +|---|---| +| Python | 3.9 | +| Django | 3.2 | + +### Auto creating updates +The following tools can be used to auto-upgrade syntax that was depreciated in new versions: +```bash +pip install pyupgrade +pip install django-upgrade +``` + +To update the codebase run the following script. +```bash +pyupgrade `find . -name "*.py"` +django-upgrade --target-version 3.2 `find . -name "*.py"` +``` + +### Credits +If you add any new dependencies / libraries, they need to be added to [the docs](https://github.com/inventree/inventree-docs/blob/master/docs/credits.md). Please try to do that as timely as possible. + + ## Migration Files Any required migration files **must** be included in the commit, or the pull-request will be rejected. If you change the underlying database schema, make sure you run `invoke migrate` and commit the migration files before submitting the PR. diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index 09ec02f158..171fe414d2 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -5,7 +5,7 @@ Main JSON interface views # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings from django.http import JsonResponse diff --git a/InvenTree/InvenTree/fields.py b/InvenTree/InvenTree/fields.py index fa91831679..c6efb687f1 100644 --- a/InvenTree/InvenTree/fields.py +++ b/InvenTree/InvenTree/fields.py @@ -6,7 +6,7 @@ import sys from .validators import allowable_url_schemes -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.forms.fields import URLField as FormURLField from django.db import models as models diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 02b993d31b..36ad66de24 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from urllib.parse import urlencode import logging -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django import forms from django.contrib.auth.models import User, Group from django.conf import settings @@ -150,13 +150,13 @@ class DeleteForm(forms.Form): class EditUserForm(HelperForm): - """ Form for editing user information + """ + Form for editing user information """ class Meta: model = User fields = [ - 'username', 'first_name', 'last_name', ] @@ -319,7 +319,7 @@ class CustomSocialAccountAdapter(RegistratonMixin, DefaultSocialAccountAdapter): redirect_url = reverse('two-factor-authenticate') # Add GET parameters to the URL if they exist. if request.GET: - redirect_url += u'?' + urlencode(request.GET) + redirect_url += '?' + urlencode(request.GET) raise ImmediateHttpResponse( response=HttpResponseRedirect(redirect_url) diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index c5a8ad4b67..d9dfaa395d 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -13,7 +13,7 @@ from decimal import Decimal, InvalidOperation from wsgiref.util import FileWrapper from django.http import StreamingHttpResponse from django.core.exceptions import ValidationError, FieldError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import Permission @@ -427,17 +427,24 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int): serials = serials.strip() # fill in the next serial number into the serial - if '~' in serials: - serials = serials.replace('~', str(next_number)) + while '~' in serials: + serials = serials.replace('~', str(next_number), 1) + next_number += 1 # Split input string by whitespace or comma (,) characters - groups = re.split("[\s,]+", serials) + groups = re.split(r"[\s,]+", serials) numbers = [] errors = [] # Helper function to check for duplicated numbers def add_sn(sn): + # Attempt integer conversion first, so numerical strings are never stored + try: + sn = int(sn) + except ValueError: + pass + if sn in numbers: errors.append(_('Duplicate serial: {sn}').format(sn=sn)) else: @@ -451,15 +458,25 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int): if len(serials) == 0: raise ValidationError([_("Empty serial number string")]) - for group in groups: + # If the user has supplied the correct number of serials, don't process them for groups + # just add them so any duplicates (or future validations) are checked + if len(groups) == expected_quantity: + for group in groups: + add_sn(group) + if len(errors) > 0: + raise ValidationError(errors) + + return numbers + + for group in groups: group = group.strip() # Hyphen indicates a range of numbers if '-' in group: items = group.split('-') - if len(items) == 2: + if len(items) == 2 and all([i.isnumeric() for i in items]): a = items[0].strip() b = items[1].strip() @@ -471,13 +488,14 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int): for n in range(a, b + 1): add_sn(n) else: - errors.append(_("Invalid group: {g}").format(g=group)) + errors.append(_("Invalid group range: {g}").format(g=group)) except ValueError: errors.append(_("Invalid group: {g}").format(g=group)) continue else: - errors.append(_("Invalid group: {g}").format(g=group)) + # More than 2 hyphens or non-numeric group so add without interpolating + add_sn(group) # plus signals either # 1: 'start+': expected number of serials, starting at start @@ -495,23 +513,17 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int): # case 1 else: - end = start + expected_quantity + end = start + (expected_quantity - len(numbers)) for n in range(start, end): add_sn(n) # no case else: - errors.append(_("Invalid group: {g}").format(g=group)) + errors.append(_("Invalid group sequence: {g}").format(g=group)) # At this point, we assume that the "group" is just a single serial value elif group: - - try: - # First attempt to add as an integer value - add_sn(int(group)) - except (ValueError): - # As a backup, add as a string value - add_sn(group) + add_sn(group) # No valid input group detected else: diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index b679713b32..91cfefc6d6 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -1,7 +1,10 @@ from django.shortcuts import HttpResponseRedirect from django.urls import reverse_lazy, Resolver404 from django.shortcuts import redirect -from django.conf.urls import include, url +from django.urls import include, re_path +from django.conf import settings +from django.contrib.auth.middleware import PersistentRemoteUserMiddleware + import logging from rest_framework.authtoken.models import Token @@ -82,14 +85,14 @@ class AuthRequiredMiddleware(object): if path not in urls and not path.startswith('/api/'): # Save the 'next' parameter to pass through to the login view - return redirect('%s?next=%s' % (reverse_lazy('account_login'), request.path)) + return redirect('{}?next={}'.format(reverse_lazy('account_login'), request.path)) response = self.get_response(request) return response -url_matcher = url('', include(frontendpatterns)) +url_matcher = re_path('', include(frontendpatterns)) class Check2FAMiddleware(BaseRequire2FAMiddleware): @@ -112,3 +115,16 @@ class CustomAllauthTwoFactorMiddleware(AllauthTwoFactorMiddleware): super().process_request(request) except Resolver404: pass + + +class InvenTreeRemoteUserMiddleware(PersistentRemoteUserMiddleware): + """ + Middleware to check if HTTP-header based auth is enabled and to set it up + """ + header = settings.REMOTE_LOGIN_HEADER + + def process_request(self, request): + if not settings.REMOTE_LOGIN: + return + + return super().process_request(request) diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index e21e2fb0fc..3e57883875 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -15,7 +15,7 @@ from collections import OrderedDict from django.conf import settings from django.contrib.auth.models import User from django.core.exceptions import ValidationError as DjangoValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.db import models from djmoney.contrib.django_rest_framework.fields import MoneyField diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 04c9a9bc19..5d0aea35e3 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -25,6 +25,7 @@ import moneyed import yaml from django.utils.translation import gettext_lazy as _ from django.contrib.messages import constants as messages +from django.core.files.storage import default_storage import django.conf.locale from .config import get_base_dir, get_config_file, get_plugin_file, get_setting @@ -61,12 +62,6 @@ DEBUG = _is_true(get_setting( CONFIG.get('debug', True) )) -# Determine if we are running in "demo mode" -DEMO_MODE = _is_true(get_setting( - 'INVENTREE_DEMO', - CONFIG.get('demo', False) -)) - DOCKER = _is_true(get_setting( 'INVENTREE_DOCKER', False @@ -216,9 +211,6 @@ MEDIA_URL = '/media/' if DEBUG: logger.info("InvenTree running with DEBUG enabled") -if DEMO_MODE: - logger.warning("InvenTree running in DEMO mode") # pragma: no cover - logger.debug(f"MEDIA_ROOT: '{MEDIA_ROOT}'") logger.debug(f"STATIC_ROOT: '{STATIC_ROOT}'") @@ -289,6 +281,7 @@ MIDDLEWARE = CONFIG.get('middleware', [ 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'InvenTree.middleware.InvenTreeRemoteUserMiddleware', # Remote / proxy auth 'django_otp.middleware.OTPMiddleware', # MFA support 'InvenTree.middleware.CustomAllauthTwoFactorMiddleware', # Flow control for allauth 'django.contrib.messages.middleware.MessageMiddleware', @@ -302,6 +295,7 @@ MIDDLEWARE = CONFIG.get('middleware', [ MIDDLEWARE.append('error_report.middleware.ExceptionProcessor') AUTHENTICATION_BACKENDS = CONFIG.get('authentication_backends', [ + 'django.contrib.auth.backends.RemoteUserBackend', # proxy login 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', # SSO login via external providers ]) @@ -312,6 +306,10 @@ if DEBUG and CONFIG.get('debug_toolbar', False): # pragma: no cover INSTALLED_APPS.append('debug_toolbar') MIDDLEWARE.append('debug_toolbar.middleware.DebugToolbarMiddleware') +# Allow secure http developer server in debug mode +if DEBUG: + INSTALLED_APPS.append('sslserver') + # InvenTree URL configuration # Base URL for admin pages (default="admin") @@ -854,6 +852,10 @@ ACCOUNT_FORMS = { SOCIALACCOUNT_ADAPTER = 'InvenTree.forms.CustomSocialAccountAdapter' ACCOUNT_ADAPTER = 'InvenTree.forms.CustomAccountAdapter' +# login settings +REMOTE_LOGIN = get_setting('INVENTREE_REMOTE_LOGIN', CONFIG.get('remote_login', False)) +REMOTE_LOGIN_HEADER = get_setting('INVENTREE_REMOTE_LOGIN_HEADER', CONFIG.get('remote_login_header', 'REMOTE_USER')) + # Markdownx configuration # Ref: https://neutronx.github.io/django-markdownx/customization/ MARKDOWNX_MEDIA_PATH = datetime.now().strftime('markdownx/%Y/%m/%d') @@ -913,3 +915,20 @@ PLUGIN_TESTING = get_setting('PLUGIN_TESTING', TESTING) # are plugins beeing te PLUGIN_TESTING_SETUP = get_setting('PLUGIN_TESTING_SETUP', False) # load plugins from setup hooks in testing? PLUGIN_RETRY = get_setting('PLUGIN_RETRY', 5) # how often should plugin loading be tried? PLUGIN_FILE_CHECKED = False # Was the plugin file checked? + +# User interface customization values +CUSTOMIZE = get_setting( + 'INVENTREE_CUSTOMIZE', + CONFIG.get('customize', {}), + {} +) + +CUSTOM_LOGO = get_setting( + 'INVENTREE_CUSTOM_LOGO', + CUSTOMIZE.get('logo', False) +) + +# check that the logo-file exsists in media +if CUSTOM_LOGO and not default_storage.exists(CUSTOM_LOGO): + CUSTOM_LOGO = False + logger.warning("The custom logo file could not be found in the default media storage") diff --git a/InvenTree/InvenTree/static/script/qr-scanner-worker.min.js b/InvenTree/InvenTree/static/script/qr-scanner-worker.min.js new file mode 100644 index 0000000000..9e89d17ccb --- /dev/null +++ b/InvenTree/InvenTree/static/script/qr-scanner-worker.min.js @@ -0,0 +1,99 @@ +/*! qr-scanner v1.4.1 https://github.com/nimiq/qr-scanner Licensed MIT */ +export const createWorker=()=>new Worker(URL.createObjectURL(new Blob([`class x{constructor(a,b){this.width=b;this.height=a.length/b;this.data=a}static createEmpty(a,b){return new x(new Uint8ClampedArray(a*b),a)}get(a,b){return 0>a||a>=this.width||0>b||b>=this.height?!1:!!this.data[b*this.width+a]}set(a,b,c){this.data[b*this.width+a]=c?1:0}setRegion(a,b,c,d,e){for(let f=b;fa||32this.available())throw Error("Cannot read "+a.toString()+" bits");var b=0;if(0>8-c<>b;a-=c;this.bitOffset+=c;8===this.bitOffset&&(this.bitOffset=0,this.byteOffset++)}if(0>c<>c, +this.bitOffset+=a)}return b}available(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset}}var B,C=B||(B={});C.Numeric="numeric";C.Alphanumeric="alphanumeric";C.Byte="byte";C.Kanji="kanji";C.ECI="eci";C.StructuredAppend="structuredappend";var D,E=D||(D={});E[E.Terminator=0]="Terminator";E[E.Numeric=1]="Numeric";E[E.Alphanumeric=2]="Alphanumeric";E[E.Byte=4]="Byte";E[E.Kanji=8]="Kanji";E[E.ECI=7]="ECI";E[E.StructuredAppend=3]="StructuredAppend";let F="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".split(""); +function ca(a,b){let c=[],d="";b=a.readBits([8,16,16][b]);for(let e=0;e\`%\${("0"+e.toString(16)).substr(-2)}\`).join(""))}catch(e){}return{bytes:c,text:d}} +function da(a,b){a=new ba(a);let c=9>=b?0:26>=b?1:2;for(b={text:"",bytes:[],chunks:[],version:b};4<=a.available();){var d=a.readBits(4);if(d===D.Terminator)return b;if(d===D.ECI)0===a.readBits(1)?b.chunks.push({type:B.ECI,assignmentNumber:a.readBits(7)}):0===a.readBits(1)?b.chunks.push({type:B.ECI,assignmentNumber:a.readBits(14)}):0===a.readBits(1)?b.chunks.push({type:B.ECI,assignmentNumber:a.readBits(21)}):b.chunks.push({type:B.ECI,assignmentNumber:-1});else if(d===D.Numeric){var e=a,f=[];d="";for(var g= +e.readBits([10,12,14][c]);3<=g;){var h=e.readBits(10);if(1E3<=h)throw Error("Invalid numeric value above 999");var k=Math.floor(h/100),m=Math.floor(h/10)%10;h%=10;f.push(48+k,48+m,48+h);d+=k.toString()+m.toString()+h.toString();g-=3}if(2===g){g=e.readBits(7);if(100<=g)throw Error("Invalid numeric value above 99");e=Math.floor(g/10);g%=10;f.push(48+e,48+g);d+=e.toString()+g.toString()}else if(1===g){e=e.readBits(4);if(10<=e)throw Error("Invalid numeric value above 9");f.push(48+e);d+=e.toString()}b.text+= +d;b.bytes.push(...f);b.chunks.push({type:B.Numeric,text:d})}else if(d===D.Alphanumeric){e=a;f=[];d="";for(g=e.readBits([9,11,13][c]);2<=g;)m=e.readBits(11),k=Math.floor(m/45),m%=45,f.push(F[k].charCodeAt(0),F[m].charCodeAt(0)),d+=F[k]+F[m],g-=2;1===g&&(e=e.readBits(6),f.push(F[e].charCodeAt(0)),d+=F[e]);b.text+=d;b.bytes.push(...f);b.chunks.push({type:B.Alphanumeric,text:d})}else if(d===D.Byte)d=ca(a,c),b.text+=d.text,b.bytes.push(...d.bytes),b.chunks.push({type:B.Byte,bytes:d.bytes,text:d.text}); +else if(d===D.Kanji){f=a;d=[];e=f.readBits([8,10,12][c]);for(g=0;gk?k+33088:k+49472,d.push(k>>8,k&255);f=(new TextDecoder("shift-jis")).decode(Uint8Array.from(d));b.text+=f;b.bytes.push(...d);b.chunks.push({type:B.Kanji,bytes:d,text:f})}else d===D.StructuredAppend&&b.chunks.push({type:B.StructuredAppend,currentSequence:a.readBits(4),totalSequence:a.readBits(4),parity:a.readBits(8)})}if(0===a.available()||0===a.readBits(a.available()))return b} +class G{constructor(a,b){if(0===b.length)throw Error("No coefficients.");this.field=a;let c=b.length;if(1a.length&&([b,a]=[a,b]);let c=new Uint8ClampedArray(a.length),d=a.length-b.length;for(var e=0;ea)throw Error("Invalid degree less than 0");if(0===b)return this.field.zero;let c=this.coefficients.length;a=new Uint8ClampedArray(c+a);for(let d=0;d{b^=d}),b;b=this.coefficients[0];for(let d=1;d=this.size&&(a=(a^this.primitive)&this.size-1);for(a=0;aa)throw Error("Invalid monomial degree less than 0");if(0===b)return this.zero;a=new Uint8ClampedArray(a+1);a[0]=b;return new G(this,a)}log(a){if(0===a)throw Error("Can't take log(0)");return this.logTable[a]}exp(a){return this.expTable[a]}} +function fa(a,b,c,d){b.degree()=d/2;){var g=b;let h=e;b=c;e=f;if(b.isZero())return null;c=g;f=a.zero;g=b.getCoefficient(b.degree());for(g=a.inverse(g);c.degree()>=b.degree()&&!c.isZero();){let k=c.degree()-b.degree(),m=a.multiply(c.getCoefficient(c.degree()),g);f=f.addOrSubtract(a.buildMonomial(k,m));c=c.addOrSubtract(b.multiplyByMonomial(k,m))}f=f.multiplyPoly(e).addOrSubtract(h);if(c.degree()>=b.degree())return null}d=f.getCoefficient(0); +if(0===d)return null;a=a.inverse(d);return[f.multiply(a),c.multiply(a)]} +function ha(a,b){let c=new Uint8ClampedArray(a.length);c.set(a);a=new ea(285,256,0);var d=new G(a,c),e=new Uint8ClampedArray(b),f=!1;for(var g=0;gf)return null;c[f]^=d[e]}return c} +let I=[{infoBits:null,versionNumber:1,alignmentPatternCenters:[],errorCorrectionLevels:[{ecCodewordsPerBlock:7,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:10,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:16}]},{ecCodewordsPerBlock:13,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:13}]},{ecCodewordsPerBlock:17,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:9}]}]},{infoBits:null,versionNumber:2,alignmentPatternCenters:[6,18],errorCorrectionLevels:[{ecCodewordsPerBlock:10,ecBlocks:[{numBlocks:1, +dataCodewordsPerBlock:34}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:28}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:22}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:16}]}]},{infoBits:null,versionNumber:3,alignmentPatternCenters:[6,22],errorCorrectionLevels:[{ecCodewordsPerBlock:15,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:55}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:18, +ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:13}]}]},{infoBits:null,versionNumber:4,alignmentPatternCenters:[6,26],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:80}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:32}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:9}]}]}, +{infoBits:null,versionNumber:5,alignmentPatternCenters:[6,30],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:43}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:15},{numBlocks:2,dataCodewordsPerBlock:16}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:11},{numBlocks:2,dataCodewordsPerBlock:12}]}]},{infoBits:null,versionNumber:6,alignmentPatternCenters:[6, +34],errorCorrectionLevels:[{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:68}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:27}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:15}]}]},{infoBits:31892,versionNumber:7,alignmentPatternCenters:[6,22,38],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:78}]},{ecCodewordsPerBlock:18, +ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:31}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:14},{numBlocks:4,dataCodewordsPerBlock:15}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:13},{numBlocks:1,dataCodewordsPerBlock:14}]}]},{infoBits:34236,versionNumber:8,alignmentPatternCenters:[6,24,42],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:97}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:38}, +{numBlocks:2,dataCodewordsPerBlock:39}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:18},{numBlocks:2,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:14},{numBlocks:2,dataCodewordsPerBlock:15}]}]},{infoBits:39577,versionNumber:9,alignmentPatternCenters:[6,26,46],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:36}, +{numBlocks:2,dataCodewordsPerBlock:37}]},{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:16},{numBlocks:4,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:12},{numBlocks:4,dataCodewordsPerBlock:13}]}]},{infoBits:42195,versionNumber:10,alignmentPatternCenters:[6,28,50],errorCorrectionLevels:[{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:68},{numBlocks:2,dataCodewordsPerBlock:69}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4, +dataCodewordsPerBlock:43},{numBlocks:1,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:19},{numBlocks:2,dataCodewordsPerBlock:20}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:15},{numBlocks:2,dataCodewordsPerBlock:16}]}]},{infoBits:48118,versionNumber:11,alignmentPatternCenters:[6,30,54],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:81}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:1, +dataCodewordsPerBlock:50},{numBlocks:4,dataCodewordsPerBlock:51}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:22},{numBlocks:4,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:12},{numBlocks:8,dataCodewordsPerBlock:13}]}]},{infoBits:51042,versionNumber:12,alignmentPatternCenters:[6,32,58],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:92},{numBlocks:2,dataCodewordsPerBlock:93}]}, +{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:36},{numBlocks:2,dataCodewordsPerBlock:37}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:20},{numBlocks:6,dataCodewordsPerBlock:21}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:14},{numBlocks:4,dataCodewordsPerBlock:15}]}]},{infoBits:55367,versionNumber:13,alignmentPatternCenters:[6,34,62],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:107}]}, +{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:37},{numBlocks:1,dataCodewordsPerBlock:38}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:20},{numBlocks:4,dataCodewordsPerBlock:21}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:11},{numBlocks:4,dataCodewordsPerBlock:12}]}]},{infoBits:58893,versionNumber:14,alignmentPatternCenters:[6,26,46,66],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:115}, +{numBlocks:1,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:40},{numBlocks:5,dataCodewordsPerBlock:41}]},{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:16},{numBlocks:5,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:12},{numBlocks:5,dataCodewordsPerBlock:13}]}]},{infoBits:63784,versionNumber:15,alignmentPatternCenters:[6,26,48,70],errorCorrectionLevels:[{ecCodewordsPerBlock:22, +ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:87},{numBlocks:1,dataCodewordsPerBlock:88}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:41},{numBlocks:5,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:24},{numBlocks:7,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:12},{numBlocks:7,dataCodewordsPerBlock:13}]}]},{infoBits:68472,versionNumber:16,alignmentPatternCenters:[6,26,50, +74],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:98},{numBlocks:1,dataCodewordsPerBlock:99}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:45},{numBlocks:3,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:19},{numBlocks:2,dataCodewordsPerBlock:20}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:15},{numBlocks:13,dataCodewordsPerBlock:16}]}]},{infoBits:70749, +versionNumber:17,alignmentPatternCenters:[6,30,54,78],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:107},{numBlocks:5,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:46},{numBlocks:1,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:22},{numBlocks:15,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:14},{numBlocks:17, +dataCodewordsPerBlock:15}]}]},{infoBits:76311,versionNumber:18,alignmentPatternCenters:[6,30,56,82],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:120},{numBlocks:1,dataCodewordsPerBlock:121}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:9,dataCodewordsPerBlock:43},{numBlocks:4,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:22},{numBlocks:1,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2, +dataCodewordsPerBlock:14},{numBlocks:19,dataCodewordsPerBlock:15}]}]},{infoBits:79154,versionNumber:19,alignmentPatternCenters:[6,30,58,86],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:113},{numBlocks:4,dataCodewordsPerBlock:114}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:44},{numBlocks:11,dataCodewordsPerBlock:45}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:21},{numBlocks:4,dataCodewordsPerBlock:22}]}, +{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:9,dataCodewordsPerBlock:13},{numBlocks:16,dataCodewordsPerBlock:14}]}]},{infoBits:84390,versionNumber:20,alignmentPatternCenters:[6,34,62,90],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:107},{numBlocks:5,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:41},{numBlocks:13,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:24}, +{numBlocks:5,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:15},{numBlocks:10,dataCodewordsPerBlock:16}]}]},{infoBits:87683,versionNumber:21,alignmentPatternCenters:[6,28,50,72,94],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:116},{numBlocks:4,dataCodewordsPerBlock:117}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:22}, +{numBlocks:6,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:16},{numBlocks:6,dataCodewordsPerBlock:17}]}]},{infoBits:92361,versionNumber:22,alignmentPatternCenters:[6,26,50,74,98],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:111},{numBlocks:7,dataCodewordsPerBlock:112}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:24}, +{numBlocks:16,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:34,dataCodewordsPerBlock:13}]}]},{infoBits:96236,versionNumber:23,alignmentPatternCenters:[6,30,54,74,102],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:121},{numBlocks:5,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:47},{numBlocks:14,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:24}, +{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:16,dataCodewordsPerBlock:15},{numBlocks:14,dataCodewordsPerBlock:16}]}]},{infoBits:102084,versionNumber:24,alignmentPatternCenters:[6,28,54,80,106],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:117},{numBlocks:4,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:45},{numBlocks:14,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30, +ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:24},{numBlocks:16,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:30,dataCodewordsPerBlock:16},{numBlocks:2,dataCodewordsPerBlock:17}]}]},{infoBits:102881,versionNumber:25,alignmentPatternCenters:[6,32,58,84,110],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:106},{numBlocks:4,dataCodewordsPerBlock:107}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:47},{numBlocks:13, +dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:24},{numBlocks:22,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:15},{numBlocks:13,dataCodewordsPerBlock:16}]}]},{infoBits:110507,versionNumber:26,alignmentPatternCenters:[6,30,58,86,114],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:114},{numBlocks:2,dataCodewordsPerBlock:115}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:19, +dataCodewordsPerBlock:46},{numBlocks:4,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:28,dataCodewordsPerBlock:22},{numBlocks:6,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:33,dataCodewordsPerBlock:16},{numBlocks:4,dataCodewordsPerBlock:17}]}]},{infoBits:110734,versionNumber:27,alignmentPatternCenters:[6,34,62,90,118],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:122},{numBlocks:4,dataCodewordsPerBlock:123}]}, +{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:45},{numBlocks:3,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:23},{numBlocks:26,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:15},{numBlocks:28,dataCodewordsPerBlock:16}]}]},{infoBits:117786,versionNumber:28,alignmentPatternCenters:[6,26,50,74,98,122],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:117}, +{numBlocks:10,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:45},{numBlocks:23,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:24},{numBlocks:31,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:15},{numBlocks:31,dataCodewordsPerBlock:16}]}]},{infoBits:119615,versionNumber:29,alignmentPatternCenters:[6,30,54,78,102,126],errorCorrectionLevels:[{ecCodewordsPerBlock:30, +ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:116},{numBlocks:7,dataCodewordsPerBlock:117}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:21,dataCodewordsPerBlock:45},{numBlocks:7,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:23},{numBlocks:37,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:15},{numBlocks:26,dataCodewordsPerBlock:16}]}]},{infoBits:126325,versionNumber:30,alignmentPatternCenters:[6, +26,52,78,104,130],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:115},{numBlocks:10,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:47},{numBlocks:10,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:24},{numBlocks:25,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:23,dataCodewordsPerBlock:15},{numBlocks:25,dataCodewordsPerBlock:16}]}]}, +{infoBits:127568,versionNumber:31,alignmentPatternCenters:[6,30,56,82,108,134],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:115},{numBlocks:3,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:46},{numBlocks:29,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:42,dataCodewordsPerBlock:24},{numBlocks:1,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:23,dataCodewordsPerBlock:15}, +{numBlocks:28,dataCodewordsPerBlock:16}]}]},{infoBits:133589,versionNumber:32,alignmentPatternCenters:[6,34,60,86,112,138],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:115}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:46},{numBlocks:23,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:24},{numBlocks:35,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19, +dataCodewordsPerBlock:15},{numBlocks:35,dataCodewordsPerBlock:16}]}]},{infoBits:136944,versionNumber:33,alignmentPatternCenters:[6,30,58,86,114,142],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:115},{numBlocks:1,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:14,dataCodewordsPerBlock:46},{numBlocks:21,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:29,dataCodewordsPerBlock:24},{numBlocks:19,dataCodewordsPerBlock:25}]}, +{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:15},{numBlocks:46,dataCodewordsPerBlock:16}]}]},{infoBits:141498,versionNumber:34,alignmentPatternCenters:[6,34,62,90,118,146],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:115},{numBlocks:6,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:14,dataCodewordsPerBlock:46},{numBlocks:23,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:44, +dataCodewordsPerBlock:24},{numBlocks:7,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:59,dataCodewordsPerBlock:16},{numBlocks:1,dataCodewordsPerBlock:17}]}]},{infoBits:145311,versionNumber:35,alignmentPatternCenters:[6,30,54,78,102,126,150],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:121},{numBlocks:7,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:47},{numBlocks:26,dataCodewordsPerBlock:48}]}, +{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:39,dataCodewordsPerBlock:24},{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:15},{numBlocks:41,dataCodewordsPerBlock:16}]}]},{infoBits:150283,versionNumber:36,alignmentPatternCenters:[6,24,50,76,102,128,154],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:121},{numBlocks:14,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6, +dataCodewordsPerBlock:47},{numBlocks:34,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:46,dataCodewordsPerBlock:24},{numBlocks:10,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:15},{numBlocks:64,dataCodewordsPerBlock:16}]}]},{infoBits:152622,versionNumber:37,alignmentPatternCenters:[6,28,54,80,106,132,158],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:122},{numBlocks:4,dataCodewordsPerBlock:123}]}, +{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:29,dataCodewordsPerBlock:46},{numBlocks:14,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:49,dataCodewordsPerBlock:24},{numBlocks:10,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:24,dataCodewordsPerBlock:15},{numBlocks:46,dataCodewordsPerBlock:16}]}]},{infoBits:158308,versionNumber:38,alignmentPatternCenters:[6,32,58,84,110,136,162],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4, +dataCodewordsPerBlock:122},{numBlocks:18,dataCodewordsPerBlock:123}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:46},{numBlocks:32,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:48,dataCodewordsPerBlock:24},{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:42,dataCodewordsPerBlock:15},{numBlocks:32,dataCodewordsPerBlock:16}]}]},{infoBits:161089,versionNumber:39,alignmentPatternCenters:[6,26,54,82,110,138,166], +errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:20,dataCodewordsPerBlock:117},{numBlocks:4,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:40,dataCodewordsPerBlock:47},{numBlocks:7,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:43,dataCodewordsPerBlock:24},{numBlocks:22,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:15},{numBlocks:67,dataCodewordsPerBlock:16}]}]},{infoBits:167017, +versionNumber:40,alignmentPatternCenters:[6,30,58,86,114,142,170],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:118},{numBlocks:6,dataCodewordsPerBlock:119}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:18,dataCodewordsPerBlock:47},{numBlocks:31,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:34,dataCodewordsPerBlock:24},{numBlocks:34,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:20,dataCodewordsPerBlock:15}, +{numBlocks:61,dataCodewordsPerBlock:16}]}]}];function J(a,b){a^=b;for(b=0;a;)b++,a&=a-1;return b}function K(a,b){return b<<1|a} +let ia=[{bits:21522,formatInfo:{errorCorrectionLevel:1,dataMask:0}},{bits:20773,formatInfo:{errorCorrectionLevel:1,dataMask:1}},{bits:24188,formatInfo:{errorCorrectionLevel:1,dataMask:2}},{bits:23371,formatInfo:{errorCorrectionLevel:1,dataMask:3}},{bits:17913,formatInfo:{errorCorrectionLevel:1,dataMask:4}},{bits:16590,formatInfo:{errorCorrectionLevel:1,dataMask:5}},{bits:20375,formatInfo:{errorCorrectionLevel:1,dataMask:6}},{bits:19104,formatInfo:{errorCorrectionLevel:1,dataMask:7}},{bits:30660,formatInfo:{errorCorrectionLevel:0, +dataMask:0}},{bits:29427,formatInfo:{errorCorrectionLevel:0,dataMask:1}},{bits:32170,formatInfo:{errorCorrectionLevel:0,dataMask:2}},{bits:30877,formatInfo:{errorCorrectionLevel:0,dataMask:3}},{bits:26159,formatInfo:{errorCorrectionLevel:0,dataMask:4}},{bits:25368,formatInfo:{errorCorrectionLevel:0,dataMask:5}},{bits:27713,formatInfo:{errorCorrectionLevel:0,dataMask:6}},{bits:26998,formatInfo:{errorCorrectionLevel:0,dataMask:7}},{bits:5769,formatInfo:{errorCorrectionLevel:3,dataMask:0}},{bits:5054, +formatInfo:{errorCorrectionLevel:3,dataMask:1}},{bits:7399,formatInfo:{errorCorrectionLevel:3,dataMask:2}},{bits:6608,formatInfo:{errorCorrectionLevel:3,dataMask:3}},{bits:1890,formatInfo:{errorCorrectionLevel:3,dataMask:4}},{bits:597,formatInfo:{errorCorrectionLevel:3,dataMask:5}},{bits:3340,formatInfo:{errorCorrectionLevel:3,dataMask:6}},{bits:2107,formatInfo:{errorCorrectionLevel:3,dataMask:7}},{bits:13663,formatInfo:{errorCorrectionLevel:2,dataMask:0}},{bits:12392,formatInfo:{errorCorrectionLevel:2, +dataMask:1}},{bits:16177,formatInfo:{errorCorrectionLevel:2,dataMask:2}},{bits:14854,formatInfo:{errorCorrectionLevel:2,dataMask:3}},{bits:9396,formatInfo:{errorCorrectionLevel:2,dataMask:4}},{bits:8579,formatInfo:{errorCorrectionLevel:2,dataMask:5}},{bits:11994,formatInfo:{errorCorrectionLevel:2,dataMask:6}},{bits:11245,formatInfo:{errorCorrectionLevel:2,dataMask:7}}],ja=[a=>0===(a.y+a.x)%2,a=>0===a.y%2,a=>0===a.x%3,a=>0===(a.y+a.x)%3,a=>0===(Math.floor(a.y/2)+Math.floor(a.x/3))%2,a=>0===a.x*a.y% +2+a.x*a.y%3,a=>0===(a.y*a.x%2+a.y*a.x%3)%2,a=>0===((a.y+a.x)%2+a.y*a.x%3)%2]; +function ka(a,b,c){c=ja[c.dataMask];let d=a.height;var e=17+4*b.versionNumber;let f=x.createEmpty(e,e);f.setRegion(0,0,9,9,!0);f.setRegion(e-8,0,8,9,!0);f.setRegion(0,e-8,9,8,!0);for(var g of b.alignmentPatternCenters)for(var h of b.alignmentPatternCenters)6===g&&6===h||6===g&&h===e-7||g===e-7&&6===h||f.setRegion(g-2,h-2,5,5,!0);f.setRegion(6,9,1,e-17,!0);f.setRegion(9,6,e-17,1,!0);6n;n++){let q=k-n;if(!f.get(q,l)){h++;let r=a.get(q,l);c({y:l,x:q})&&(r=!r);g=g<<1|r;8===h&&(b.push(g),g=h=0)}}}e=!e}return b} +function la(a){var b=a.height,c=Math.floor((b-17)/4);if(6>=c)return I[c-1];c=0;for(var d=5;0<=d;d--)for(var e=b-9;e>=b-11;e--)c=K(a.get(e,d),c);d=0;for(e=5;0<=e;e--)for(let g=b-9;g>=b-11;g--)d=K(a.get(e,g),d);a=Infinity;let f;for(let g of I){if(g.infoBits===c||g.infoBits===d)return g;b=J(c,g.infoBits);b=a)return f} +function ma(a){let b=0;for(var c=0;8>=c;c++)6!==c&&(b=K(a.get(c,8),b));for(c=7;0<=c;c--)6!==c&&(b=K(a.get(8,c),b));var d=a.height;c=0;for(var e=d-1;e>=d-7;e--)c=K(a.get(8,e),c);for(e=d-8;e=a?d:null} +function na(a,b,c){let d=b.errorCorrectionLevels[c],e=[],f=0;d.ecBlocks.forEach(h=>{for(let k=0;ke+f.numDataCodewords,0);c=new Uint8ClampedArray(c);a=0;for(let e of d){d=ha(e.codewords,e.codewords.length-e.numDataCodewords);if(!d)return null;for(let f=0;f{const p=g*r+m*u+q;return{x:(e*r+h*u+l)/p,y:(f*r+k*u+n)/p}};for(let r=0;rMath.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2));function O(a){return a.reduce((b,c)=>b+c)} +function qa(a,b,c){let d=N(a,b),e=N(b,c),f=N(a,c),g,h,k;e>=d&&e>=f?[g,h,k]=[b,a,c]:f>=e&&f>=d?[g,h,k]=[a,b,c]:[g,h,k]=[a,c,b];0>(k.x-h.x)*(g.y-h.y)-(k.y-h.y)*(g.x-h.x)&&([g,k]=[k,g]);return{bottomLeft:g,topLeft:h,topRight:k}} +function ra(a,b,c,d){d=(O(P(a,c,d,5))/7+O(P(a,b,d,5))/7+O(P(c,a,d,5))/7+O(P(b,a,d,5))/7)/4;if(1>d)throw Error("Invalid module size");b=Math.round(N(a,b)/d);a=Math.round(N(a,c)/d);a=Math.floor((b+a)/2)+7;switch(a%4){case 0:a++;break;case 2:a--}return{dimension:a,moduleSize:d}} +function Q(a,b,c,d){let e=[{x:Math.floor(a.x),y:Math.floor(a.y)}];var f=Math.abs(b.y-a.y)>Math.abs(b.x-a.x);if(f){var g=Math.floor(a.y);var h=Math.floor(a.x);a=Math.floor(b.y);b=Math.floor(b.x)}else g=Math.floor(a.x),h=Math.floor(a.y),a=Math.floor(b.x),b=Math.floor(b.y);let k=Math.abs(a-g),m=Math.abs(b-h),l=Math.floor(-k/2),n=g{d+=Math.pow(a[f]-e*c,2)});return{averageSize:c,error:d}} +function S(a,b,c){try{let d=P(a,{x:-1,y:a.y},c,b.length),e=P(a,{x:a.x,y:-1},c,b.length),f=P(a,{x:Math.max(0,a.x-a.y)-1,y:Math.max(0,a.y-a.x)-1},c,b.length),g=P(a,{x:Math.min(c.width,a.x+a.y)+1,y:Math.min(c.height,a.y+a.x)+1},c,b.length),h=R(d,b),k=R(e,b),m=R(f,b),l=R(g,b),n=(h.averageSize+k.averageSize+m.averageSize+l.averageSize)/4;return Math.sqrt(h.error*h.error+k.error*k.error+m.error*m.error+l.error*l.error)+(Math.pow(h.averageSize-n,2)+Math.pow(k.averageSize-n,2)+Math.pow(m.averageSize-n,2)+ +Math.pow(l.averageSize-n,2))/n}catch(d){return Infinity}}function T(a,b){for(var c=Math.round(b.x);a.get(c,Math.round(b.y));)c--;for(var d=Math.round(b.x);a.get(d,Math.round(b.y));)d++;c=(c+d)/2;for(d=Math.round(b.y);a.get(Math.round(c),d);)d--;for(b=Math.round(b.y);a.get(Math.round(c),b);)b++;return{x:c,y:(d+b)/2}} +function sa(a){var b=[],c=[];let d=[];var e=[];for(let p=0;p<=a.height;p++){var f=0,g=!1;let t=[0,0,0,0,0];for(let v=-1;v<=a.width;v++){var h=a.get(v,p);if(h===g)f++;else{t=[t[1],t[2],t[3],t[4],f];f=1;g=h;var k=O(t)/7;k=Math.abs(t[0]-k)y>=w.bottom.startX&& +y<=w.bottom.endX||z>=w.bottom.startX&&y<=w.bottom.endX||y<=w.bottom.startX&&z>=w.bottom.endX&&1.5>t[2]/(w.bottom.endX-w.bottom.startX)&&.5y>=w.bottom.startX&&y<=w.bottom.endX||z>=w.bottom.startX&&y<=w.bottom.endX||y<=w.bottom.startX&&z>=w.bottom.endX&&1.5>t[2]/(w.bottom.endX-w.bottom.startX)&&.5v.bottom.y!==p&&2<=v.bottom.y-v.top.y));c=c.filter(v=>v.bottom.y===p);d.push(...e.filter(v=>v.bottom.y!==p));e=e.filter(v=>v.bottom.y===p)}b.push(...c.filter(p=>2<=p.bottom.y-p.top.y));d.push(...e);c=[];for(var l of b)2>l.bottom.y-l.top.y||(b=(l.top.startX+l.top.endX+l.bottom.startX+l.bottom.endX)/4,e=(l.top.y+l.bottom.y+1)/2,a.get(Math.round(b),Math.round(e))&&(f=[l.top.endX-l.top.startX,l.bottom.endX-l.bottom.startX,l.bottom.y-l.top.y+ +1],f=O(f)/f.length,g=S({x:Math.round(b),y:Math.round(e)},[1,1,3,1,1],a),c.push({score:g,x:b,y:e,size:f})));if(3>c.length)return null;c.sort((p,t)=>p.score-t.score);l=[];for(b=0;bp.score-t.score);l.push({points:[e,f[0],f[1]],score:e.score+f[0].score+f[1].score})}l.sort((p,t)=>p.score-t.score);let {topRight:q,topLeft:r,bottomLeft:u}=qa(...l[0].points); +l=U(a,d,q,r,u);n=[];l&&n.push({alignmentPattern:{x:l.alignmentPattern.x,y:l.alignmentPattern.y},bottomLeft:{x:u.x,y:u.y},dimension:l.dimension,topLeft:{x:r.x,y:r.y},topRight:{x:q.x,y:q.y}});l=T(a,q);b=T(a,r);c=T(a,u);(a=U(a,d,l,b,c))&&n.push({alignmentPattern:{x:a.alignmentPattern.x,y:a.alignmentPattern.y},bottomLeft:{x:c.x,y:c.y},topLeft:{x:b.x,y:b.y},topRight:{x:l.x,y:l.y},dimension:a.dimension});return 0===n.length?null:n} +function U(a,b,c,d,e){let f,g;try{({dimension:f,moduleSize:g}=ra(d,c,e,a))}catch(l){return null}var h=c.x-d.x+e.x,k=c.y-d.y+e.y;c=(N(d,e)+N(d,c))/2/g;e=1-3/c;let m={x:d.x+e*(h-d.x),y:d.y+e*(k-d.y)};b=b.map(l=>{const n=(l.top.startX+l.top.endX+l.bottom.startX+l.bottom.endX)/4;l=(l.top.y+l.bottom.y+1)/2;if(a.get(Math.floor(n),Math.floor(l))){var q=S({x:Math.floor(n),y:Math.floor(l)},[1,1,1],a)+N({x:n,y:l},m);return{x:n,y:l,score:q}}}).filter(l=>!!l).sort((l,n)=>l.score-n.score);return{alignmentPattern:15<= +c&&b.length?b[0]:m,dimension:f}} +function V(a){var b=sa(a);if(!b)return null;for(let e of b){b=pa(a,e);var c=b.matrix;if(null==c)c=null;else{var d=L(c);if(d)c=d;else{for(d=0;d{a[c]=b[c]})} +function X(a,b,c,d={}){let e=Object.create(null);W(e,ta);W(e,d);d="onlyInvert"===e.inversionAttempts||"invertFirst"===e.inversionAttempts;var f="attemptBoth"===e.inversionAttempts||d;var g=e.greyScaleWeights,h=e.canOverwriteImage,k=b*c;if(a.length!==4*k)throw Error("Malformed data passed to binarizer.");var m=0;if(h){var l=new Uint8ClampedArray(a.buffer,m,k);m+=k}l=new A(b,c,l);if(g.useIntegerApproximation)for(var n=0;n>8)}else for(n=0;nv;v++)for(let w=0;8>w;w++){let aa=l.get(8*r+w,8*q+v);p=Math.min(p,aa);t=Math.max(t,aa)}v=(p+t)/2;v=Math.min(255,1.11*v);24>=t-p&&(v=p/2,0a?2:a>c?c:a;h=n-3;h=2>b?2:b>h?h:b;k=0;for(m=-2;2>=m;m++)for(p=-2;2>=p;p++)k+=u.get(c+m,h+p);c=k/25;for(h=0;8>h;h++)for(k=0;8>k;k++)m=8*a+h,p=8*b+k,t=l.get(m,p),q.set(m,p,t<=c),f&&r.set(m,p,!(t<=c))}f=f?{binarized:q,inverted:r}:{binarized:q};let {binarized:z,inverted:y}=f;(f=V(d? +y:z))||"attemptBoth"!==e.inversionAttempts&&"invertFirst"!==e.inversionAttempts||(f=V(d?z:y));return f}X.default=X;let Y="dontInvert",Z={red:77,green:150,blue:29,useIntegerApproximation:!0}; +self.onmessage=a=>{let b=a.data.id,c=a.data.data;switch(a.data.type){case "decode":(a=X(c.data,c.width,c.height,{inversionAttempts:Y,greyScaleWeights:Z}))?self.postMessage({id:b,type:"qrResult",data:a.data,cornerPoints:[a.location.topLeftCorner,a.location.topRightCorner,a.location.bottomRightCorner,a.location.bottomLeftCorner]}):self.postMessage({id:b,type:"qrResult",data:null});break;case "grayscaleWeights":Z.red=c.red;Z.green=c.green;Z.blue=c.blue;Z.useIntegerApproximation=c.useIntegerApproximation; +break;case "inversionMode":switch(c){case "original":Y="dontInvert";break;case "invert":Y="onlyInvert";break;case "both":Y="attemptBoth";break;default:throw Error("Invalid inversion mode");}break;case "close":self.close()}} +`]),{type:"application/javascript"}))//# sourceMappingURL=qr-scanner-worker.min.js.map diff --git a/InvenTree/InvenTree/static/script/qr-scanner.umd.min.js b/InvenTree/InvenTree/static/script/qr-scanner.umd.min.js new file mode 100644 index 0000000000..0ebcb2c439 --- /dev/null +++ b/InvenTree/InvenTree/static/script/qr-scanner.umd.min.js @@ -0,0 +1,32 @@ +/*! qr-scanner v1.4.1 https://github.com/nimiq/qr-scanner Licensed MIT */ +'use strict';(function(e,a){"object"===typeof exports&&"undefined"!==typeof module?module.exports=a():"function"===typeof define&&define.amd?define(a):(e="undefined"!==typeof globalThis?globalThis:e||self,e.QrScanner=a())})(this,function(){class e{constructor(a,b,c,d,f){this._legacyCanvasSize=e.DEFAULT_CANVAS_SIZE;this._preferredCamera="environment";this._maxScansPerSecond=25;this._lastScanTimestamp=-1;this._destroyed=this._flashOn=this._paused=this._active=!1;this.$video=a;this.$canvas=document.createElement("canvas"); +c&&"object"===typeof c?this._onDecode=b:(c||d||f?console.warn("You're using a deprecated version of the QrScanner constructor which will be removed in the future"):console.warn("Note that the type of the scan result passed to onDecode will change in the future. To already switch to the new api today, you can pass returnDetailedScanResult: true."),this._legacyOnDecode=b);b="object"===typeof c?c:{};this._onDecodeError=b.onDecodeError||("function"===typeof c?c:this._onDecodeError);this._calculateScanRegion= +b.calculateScanRegion||("function"===typeof d?d:this._calculateScanRegion);this._preferredCamera=b.preferredCamera||f||this._preferredCamera;this._legacyCanvasSize="number"===typeof c?c:"number"===typeof d?d:this._legacyCanvasSize;this._maxScansPerSecond=b.maxScansPerSecond||this._maxScansPerSecond;this._onPlay=this._onPlay.bind(this);this._onLoadedMetaData=this._onLoadedMetaData.bind(this);this._onVisibilityChange=this._onVisibilityChange.bind(this);this._updateOverlay=this._updateOverlay.bind(this); +a.disablePictureInPicture=!0;a.playsInline=!0;a.muted=!0;let h=!1;a.hidden&&(a.hidden=!1,h=!0);document.body.contains(a)||(document.body.appendChild(a),h=!0);c=a.parentElement;if(b.highlightScanRegion||b.highlightCodeOutline){d=!!b.overlay;this.$overlay=b.overlay||document.createElement("div");f=this.$overlay.style;f.position="absolute";f.display="none";f.pointerEvents="none";this.$overlay.classList.add("scan-region-highlight");if(!d&&b.highlightScanRegion){this.$overlay.innerHTML=''; +try{this.$overlay.firstElementChild.animate({transform:["scale(.98)","scale(1.01)"]},{duration:400,iterations:Infinity,direction:"alternate",easing:"ease-in-out"})}catch(m){}c.insertBefore(this.$overlay,this.$video.nextSibling)}b.highlightCodeOutline&&(this.$overlay.insertAdjacentHTML("beforeend",''), +this.$codeOutlineHighlight=this.$overlay.lastElementChild)}this._scanRegion=this._calculateScanRegion(a);requestAnimationFrame(()=>{let m=window.getComputedStyle(a);"none"===m.display&&(a.style.setProperty("display","block","important"),h=!0);"visible"!==m.visibility&&(a.style.setProperty("visibility","visible","important"),h=!0);h&&(console.warn("QrScanner has overwritten the video hiding style to avoid Safari stopping the playback."),a.style.opacity="0",a.style.width="0",a.style.height="0",this.$overlay&& +this.$overlay.parentElement&&this.$overlay.parentElement.removeChild(this.$overlay),delete this.$overlay,delete this.$codeOutlineHighlight);this.$overlay&&this._updateOverlay()});a.addEventListener("play",this._onPlay);a.addEventListener("loadedmetadata",this._onLoadedMetaData);document.addEventListener("visibilitychange",this._onVisibilityChange);window.addEventListener("resize",this._updateOverlay);this._qrEnginePromise=e.createQrEngine()}static set WORKER_PATH(a){console.warn("Setting QrScanner.WORKER_PATH is not required and not supported anymore. Have a look at the README for new setup instructions.")}static async hasCamera(){try{return!!(await e.listCameras(!1)).length}catch(a){return!1}}static async listCameras(a= +!1){if(!navigator.mediaDevices)return[];let b=async()=>(await navigator.mediaDevices.enumerateDevices()).filter(d=>"videoinput"===d.kind),c;try{a&&(await b()).every(d=>!d.label)&&(c=await navigator.mediaDevices.getUserMedia({audio:!1,video:!0}))}catch(d){}try{return(await b()).map((d,f)=>({id:d.deviceId,label:d.label||(0===f?"Default Camera":`Camera ${f+1}`)}))}finally{c&&(console.warn("Call listCameras after successfully starting a QR scanner to avoid creating a temporary video stream"),e._stopVideoStream(c))}}async hasFlash(){let a; +try{if(this.$video.srcObject){if(!(this.$video.srcObject instanceof MediaStream))return!1;a=this.$video.srcObject}else a=(await this._getCameraStream()).stream;return"torch"in a.getVideoTracks()[0].getSettings()}catch(b){return!1}finally{a&&a!==this.$video.srcObject&&(console.warn("Call hasFlash after successfully starting the scanner to avoid creating a temporary video stream"),e._stopVideoStream(a))}}isFlashOn(){return this._flashOn}async toggleFlash(){this._flashOn?await this.turnFlashOff():await this.turnFlashOn()}async turnFlashOn(){if(!this._flashOn&& +!this._destroyed&&(this._flashOn=!0,this._active&&!this._paused))try{if(!await this.hasFlash())throw"No flash available";await this.$video.srcObject.getVideoTracks()[0].applyConstraints({advanced:[{torch:!0}]})}catch(a){throw this._flashOn=!1,a;}}async turnFlashOff(){this._flashOn&&(this._flashOn=!1,await this._restartVideoStream())}destroy(){this.$video.removeEventListener("loadedmetadata",this._onLoadedMetaData);this.$video.removeEventListener("play",this._onPlay);document.removeEventListener("visibilitychange", +this._onVisibilityChange);window.removeEventListener("resize",this._updateOverlay);this._destroyed=!0;this._flashOn=!1;this.stop();e._postWorkerMessage(this._qrEnginePromise,"close")}async start(){if(this._destroyed)throw Error("The QR scanner can not be started as it had been destroyed.");if(!this._active||this._paused)if("https:"!==window.location.protocol&&console.warn("The camera stream is only accessible if the page is transferred via https."),this._active=!0,!document.hidden)if(this._paused= +!1,this.$video.srcObject)await this.$video.play();else try{let {stream:a,facingMode:b}=await this._getCameraStream();!this._active||this._paused?e._stopVideoStream(a):(this._setVideoMirror(b),this.$video.srcObject=a,await this.$video.play(),this._flashOn&&(this._flashOn=!1,this.turnFlashOn().catch(()=>{})))}catch(a){if(!this._paused)throw this._active=!1,a;}}stop(){this.pause();this._active=!1}async pause(a=!1){this._paused=!0;if(!this._active)return!0;this.$video.pause();this.$overlay&&(this.$overlay.style.display= +"none");let b=()=>{this.$video.srcObject instanceof MediaStream&&(e._stopVideoStream(this.$video.srcObject),this.$video.srcObject=null)};if(a)return b(),!0;await new Promise(c=>setTimeout(c,300));if(!this._paused)return!1;b();return!0}async setCamera(a){a!==this._preferredCamera&&(this._preferredCamera=a,await this._restartVideoStream())}static async scanImage(a,b,c,d,f=!1,h=!1){let m,n=!1;b&&("scanRegion"in b||"qrEngine"in b||"canvas"in b||"disallowCanvasResizing"in b||"alsoTryWithoutScanRegion"in +b||"returnDetailedScanResult"in b)?(m=b.scanRegion,c=b.qrEngine,d=b.canvas,f=b.disallowCanvasResizing||!1,h=b.alsoTryWithoutScanRegion||!1,n=!0):b||c||d||f||h?console.warn("You're using a deprecated api for scanImage which will be removed in the future."):console.warn("Note that the return type of scanImage will change in the future. To already switch to the new api today, you can pass returnDetailedScanResult: true.");b=!!c;try{let p,k;[c,p]=await Promise.all([c||e.createQrEngine(),e._loadImage(a)]); +[d,k]=e._drawToCanvas(p,m,d,f);let q;if(c instanceof Worker){let g=c;b||e._postWorkerMessageSync(g,"inversionMode","both");q=await new Promise((l,v)=>{let w,u,r,y=-1;u=t=>{t.data.id===y&&(g.removeEventListener("message",u),g.removeEventListener("error",r),clearTimeout(w),null!==t.data.data?l({data:t.data.data,cornerPoints:e._convertPoints(t.data.cornerPoints,m)}):v(e.NO_QR_CODE_FOUND))};r=t=>{g.removeEventListener("message",u);g.removeEventListener("error",r);clearTimeout(w);v("Scanner error: "+(t? +t.message||t:"Unknown Error"))};g.addEventListener("message",u);g.addEventListener("error",r);w=setTimeout(()=>r("timeout"),1E4);let x=k.getImageData(0,0,d.width,d.height);y=e._postWorkerMessageSync(g,"decode",x,[x.data.buffer])})}else q=await Promise.race([new Promise((g,l)=>window.setTimeout(()=>l("Scanner error: timeout"),1E4)),(async()=>{try{var [g]=await c.detect(d);if(!g)throw e.NO_QR_CODE_FOUND;return{data:g.rawValue,cornerPoints:e._convertPoints(g.cornerPoints,m)}}catch(l){g=l.message||l; +if(/not implemented|service unavailable/.test(g))return e._disableBarcodeDetector=!0,e.scanImage(a,{scanRegion:m,canvas:d,disallowCanvasResizing:f,alsoTryWithoutScanRegion:h});throw`Scanner error: ${g}`;}})()]);return n?q:q.data}catch(p){if(!m||!h)throw p;let k=await e.scanImage(a,{qrEngine:c,canvas:d,disallowCanvasResizing:f});return n?k:k.data}finally{b||e._postWorkerMessage(c,"close")}}setGrayscaleWeights(a,b,c,d=!0){e._postWorkerMessage(this._qrEnginePromise,"grayscaleWeights",{red:a,green:b, +blue:c,useIntegerApproximation:d})}setInversionMode(a){e._postWorkerMessage(this._qrEnginePromise,"inversionMode",a)}static async createQrEngine(a){a&&console.warn("Specifying a worker path is not required and not supported anymore.");return!e._disableBarcodeDetector&&"BarcodeDetector"in window&&BarcodeDetector.getSupportedFormats&&(await BarcodeDetector.getSupportedFormats()).includes("qr_code")?new BarcodeDetector({formats:["qr_code"]}):import("./qr-scanner-worker.min.js").then(b=>b.createWorker())}_onPlay(){this._scanRegion= +this._calculateScanRegion(this.$video);this._updateOverlay();this.$overlay&&(this.$overlay.style.display="");this._scanFrame()}_onLoadedMetaData(){this._scanRegion=this._calculateScanRegion(this.$video);this._updateOverlay()}_onVisibilityChange(){document.hidden?this.pause():this._active&&this.start()}_calculateScanRegion(a){let b=Math.round(2/3*Math.min(a.videoWidth,a.videoHeight));return{x:Math.round((a.videoWidth-b)/2),y:Math.round((a.videoHeight-b)/2),width:b,height:b,downScaledWidth:this._legacyCanvasSize, +downScaledHeight:this._legacyCanvasSize}}_updateOverlay(){requestAnimationFrame(()=>{if(this.$overlay){var a=this.$video,b=a.videoWidth,c=a.videoHeight,d=a.offsetWidth,f=a.offsetHeight,h=a.offsetLeft,m=a.offsetTop,n=window.getComputedStyle(a),p=n.objectFit,k=b/c,q=d/f;switch(p){case "none":var g=b;var l=c;break;case "fill":g=d;l=f;break;default:("cover"===p?k>q:k{const x= +parseFloat(r);return r.endsWith("%")?(y?f-l:d-g)*x/100:x});n=this._scanRegion.width||b;q=this._scanRegion.height||c;p=this._scanRegion.x||0;var u=this._scanRegion.y||0;k=this.$overlay.style;k.width=`${n/b*g}px`;k.height=`${q/c*l}px`;k.top=`${m+w+u/c*l}px`;c=/scaleX\(-1\)/.test(a.style.transform);k.left=`${h+(c?d-v-g:v)+(c?b-p-n:p)/b*g}px`;k.transform=a.style.transform}})}static _convertPoints(a,b){if(!b)return a;let c=b.x||0,d=b.y||0,f=b.width&&b.downScaledWidth?b.width/b.downScaledWidth:1;b=b.height&& +b.downScaledHeight?b.height/b.downScaledHeight:1;for(let h of a)h.x=h.x*f+c,h.y=h.y*b+d;return a}_scanFrame(){!this._active||this.$video.paused||this.$video.ended||("requestVideoFrameCallback"in this.$video?this.$video.requestVideoFrameCallback.bind(this.$video):requestAnimationFrame)(async()=>{if(!(1>=this.$video.readyState)){var a=Date.now()-this._lastScanTimestamp,b=1E3/this._maxScansPerSecond;asetTimeout(d,b-a));this._lastScanTimestamp=Date.now();try{var c=await e.scanImage(this.$video, +{scanRegion:this._scanRegion,qrEngine:this._qrEnginePromise,canvas:this.$canvas})}catch(d){if(!this._active)return;this._onDecodeError(d)}!e._disableBarcodeDetector||await this._qrEnginePromise instanceof Worker||(this._qrEnginePromise=e.createQrEngine());c?(this._onDecode?this._onDecode(c):this._legacyOnDecode&&this._legacyOnDecode(c.data),this.$codeOutlineHighlight&&(clearTimeout(this._codeOutlineHighlightRemovalTimeout),this._codeOutlineHighlightRemovalTimeout=void 0,this.$codeOutlineHighlight.setAttribute("viewBox", +`${this._scanRegion.x||0} `+`${this._scanRegion.y||0} `+`${this._scanRegion.width||this.$video.videoWidth} `+`${this._scanRegion.height||this.$video.videoHeight}`),this.$codeOutlineHighlight.firstElementChild.setAttribute("points",c.cornerPoints.map(({x:d,y:f})=>`${d},${f}`).join(" ")),this.$codeOutlineHighlight.style.display="")):this.$codeOutlineHighlight&&!this._codeOutlineHighlightRemovalTimeout&&(this._codeOutlineHighlightRemovalTimeout=setTimeout(()=>this.$codeOutlineHighlight.style.display= +"none",100))}this._scanFrame()})}_onDecodeError(a){a!==e.NO_QR_CODE_FOUND&&console.log(a)}async _getCameraStream(){if(!navigator.mediaDevices)throw"Camera not found.";let a=/^(environment|user)$/.test(this._preferredCamera)?"facingMode":"deviceId",b=[{width:{min:1024}},{width:{min:768}},{}],c=b.map(d=>Object.assign({},d,{[a]:{exact:this._preferredCamera}}));for(let d of[...c,...b])try{let f=await navigator.mediaDevices.getUserMedia({video:d,audio:!1}),h=this._getFacingMode(f)||(d.facingMode?this._preferredCamera: +"environment"===this._preferredCamera?"user":"environment");return{stream:f,facingMode:h}}catch(f){}throw"Camera not found.";}async _restartVideoStream(){let a=this._paused;await this.pause(!0)&&!a&&this._active&&await this.start()}static _stopVideoStream(a){for(let b of a.getTracks())b.stop(),a.removeTrack(b)}_setVideoMirror(a){this.$video.style.transform="scaleX("+("user"===a?-1:1)+")"}_getFacingMode(a){return(a=a.getVideoTracks()[0])?/rear|back|environment/i.test(a.label)?"environment":/front|user|face/i.test(a.label)? +"user":null:null}static _drawToCanvas(a,b,c,d=!1){c=c||document.createElement("canvas");let f=b&&b.x?b.x:0,h=b&&b.y?b.y:0,m=b&&b.width?b.width:a.videoWidth||a.width,n=b&&b.height?b.height:a.videoHeight||a.height;d||(d=b&&b.downScaledWidth?b.downScaledWidth:m,b=b&&b.downScaledHeight?b.downScaledHeight:n,c.width!==d&&(c.width=d),c.height!==b&&(c.height=b));b=c.getContext("2d",{alpha:!1});b.imageSmoothingEnabled=!1;b.drawImage(a,f,h,m,n,0,0,c.width,c.height);return[c,b]}static async _loadImage(a){if(a instanceof +Image)return await e._awaitImageLoad(a),a;if(a instanceof HTMLVideoElement||a instanceof HTMLCanvasElement||a instanceof SVGImageElement||"OffscreenCanvas"in window&&a instanceof OffscreenCanvas||"ImageBitmap"in window&&a instanceof ImageBitmap)return a;if(a instanceof File||a instanceof Blob||a instanceof URL||"string"===typeof a){let b=new Image;b.src=a instanceof File||a instanceof Blob?URL.createObjectURL(a):a.toString();try{return await e._awaitImageLoad(b),b}finally{(a instanceof File||a instanceof +Blob)&&URL.revokeObjectURL(b.src)}}else throw"Unsupported image type.";}static async _awaitImageLoad(a){a.complete&&0!==a.naturalWidth||await new Promise((b,c)=>{let d=f=>{a.removeEventListener("load",d);a.removeEventListener("error",d);f instanceof ErrorEvent?c("Image load error"):b()};a.addEventListener("load",d);a.addEventListener("error",d)})}static async _postWorkerMessage(a,b,c,d){return e._postWorkerMessageSync(await a,b,c,d)}static _postWorkerMessageSync(a,b,c,d){if(!(a instanceof Worker))return-1; +let f=e._workerMessageId++;a.postMessage({id:f,type:b,data:c},d);return f}}e.DEFAULT_CANVAS_SIZE=400;e.NO_QR_CODE_FOUND="No QR code found";e._disableBarcodeDetector=!1;e._workerMessageId=0;return e}) +//# sourceMappingURL=qr-scanner.umd.min.js.map diff --git a/InvenTree/InvenTree/status.py b/InvenTree/InvenTree/status.py index 181f431574..39b0afc57d 100644 --- a/InvenTree/InvenTree/status.py +++ b/InvenTree/InvenTree/status.py @@ -3,7 +3,7 @@ Provides system status functionality checks. """ # -*- coding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils import timezone import logging diff --git a/InvenTree/InvenTree/status_codes.py b/InvenTree/InvenTree/status_codes.py index 93f213445c..57bacc861e 100644 --- a/InvenTree/InvenTree/status_codes.py +++ b/InvenTree/InvenTree/status_codes.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class StatusCode: diff --git a/InvenTree/InvenTree/test_views.py b/InvenTree/InvenTree/test_views.py index 9de0a58810..0a145ec508 100644 --- a/InvenTree/InvenTree/test_views.py +++ b/InvenTree/InvenTree/test_views.py @@ -72,7 +72,7 @@ class ViewTests(TestCase): """ # Change this number as more javascript files are added to the index page - N_SCRIPT_FILES = 39 + N_SCRIPT_FILES = 40 content = self.get_index_page() diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index 669628bdea..dc3aff85e6 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -1,4 +1,3 @@ - import json from test.support import EnvironmentVarGuard @@ -186,7 +185,7 @@ class TestDownloadFile(TestCase): def test_download(self): helpers.DownloadFile("hello world", "out.txt") - helpers.DownloadFile(bytes("hello world".encode("utf8")), "out.bin") + helpers.DownloadFile(bytes(b"hello world"), "out.bin") class TestMPTT(TestCase): @@ -252,6 +251,31 @@ class TestSerialNumberExtraction(TestCase): sn = e("1, 2, 3, 4, 5", 5, 1) self.assertEqual(len(sn), 5) + # Test partially specifying serials + sn = e("1, 2, 4+", 5, 1) + self.assertEqual(len(sn), 5) + self.assertEqual(sn, [1, 2, 4, 5, 6]) + + # Test groups are not interpolated if enough serials are supplied + sn = e("1, 2, 3, AF5-69H, 5", 5, 1) + self.assertEqual(len(sn), 5) + self.assertEqual(sn, [1, 2, 3, "AF5-69H", 5]) + + # Test groups are not interpolated with more than one hyphen in a word + sn = e("1, 2, TG-4SR-92, 4+", 5, 1) + self.assertEqual(len(sn), 5) + self.assertEqual(sn, [1, 2, "TG-4SR-92", 4, 5]) + + # Test groups are not interpolated with alpha characters + sn = e("1, A-2, 3+", 5, 1) + self.assertEqual(len(sn), 5) + self.assertEqual(sn, [1, "A-2", 3, 4, 5]) + + # Test multiple placeholders + sn = e("1 2 ~ ~ ~", 5, 3) + self.assertEqual(len(sn), 5) + self.assertEqual(sn, [1, 2, 3, 4, 5]) + sn = e("1-5, 10-15", 11, 1) self.assertIn(3, sn) self.assertIn(13, sn) @@ -307,6 +331,10 @@ class TestSerialNumberExtraction(TestCase): with self.assertRaises(ValidationError): e("10, a, 7-70j", 4, 1) + # Test groups are not interpolated with word characters + with self.assertRaises(ValidationError): + e("1, 2, 3, E-5", 5, 1) + def test_combinations(self): e = helpers.extract_serial_numbers diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index ec8b891f93..aefed5156b 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -4,8 +4,7 @@ Top-level URL lookup for InvenTree application. Passes URL lookup downstream to each app as required. """ -from django.conf.urls import url, include -from django.urls import path +from django.urls import include, path, re_path from django.contrib import admin from company.urls import company_urls @@ -56,144 +55,144 @@ apipatterns = [] if settings.PLUGINS_ENABLED: apipatterns.append( - url(r'^plugin/', include(plugin_api_urls)) + re_path(r'^plugin/', include(plugin_api_urls)) ) apipatterns += [ - url(r'^barcode/', include(barcode_api_urls)), - url(r'^settings/', include(settings_api_urls)), - url(r'^part/', include(part_api_urls)), - url(r'^bom/', include(bom_api_urls)), - url(r'^company/', include(company_api_urls)), - url(r'^stock/', include(stock_api_urls)), - url(r'^build/', include(build_api_urls)), - url(r'^order/', include(order_api_urls)), - url(r'^label/', include(label_api_urls)), - url(r'^report/', include(report_api_urls)), + re_path(r'^barcode/', include(barcode_api_urls)), + re_path(r'^settings/', include(settings_api_urls)), + re_path(r'^part/', include(part_api_urls)), + re_path(r'^bom/', include(bom_api_urls)), + re_path(r'^company/', include(company_api_urls)), + re_path(r'^stock/', include(stock_api_urls)), + re_path(r'^build/', include(build_api_urls)), + re_path(r'^order/', include(order_api_urls)), + re_path(r'^label/', include(label_api_urls)), + re_path(r'^report/', include(report_api_urls)), # User URLs - url(r'^user/', include(user_urls)), + re_path(r'^user/', include(user_urls)), # Plugin endpoints - url(r'^action/', ActionPluginView.as_view(), name='api-action-plugin'), + re_path(r'^action/', ActionPluginView.as_view(), name='api-action-plugin'), # Webhook enpoint path('', include(common_api_urls)), # InvenTree information endpoint - url(r'^$', InfoView.as_view(), name='api-inventree-info'), + path('', InfoView.as_view(), name='api-inventree-info'), # Unknown endpoint - url(r'^.*$', NotFoundView.as_view(), name='api-404'), + re_path(r'^.*$', NotFoundView.as_view(), name='api-404'), ] settings_urls = [ - url(r'^i18n/?', include('django.conf.urls.i18n')), + re_path(r'^i18n/?', include('django.conf.urls.i18n')), - url(r'^appearance/?', AppearanceSelectView.as_view(), name='settings-appearance'), - url(r'^currencies-refresh/', CurrencyRefreshView.as_view(), name='settings-currencies-refresh'), + re_path(r'^appearance/?', AppearanceSelectView.as_view(), name='settings-appearance'), + re_path(r'^currencies-refresh/', CurrencyRefreshView.as_view(), name='settings-currencies-refresh'), - url(r'^category/', SettingCategorySelectView.as_view(), name='settings-category'), + re_path(r'^category/', SettingCategorySelectView.as_view(), name='settings-category'), # Catch any other urls - url(r'^.*$', SettingsView.as_view(template_name='InvenTree/settings/settings.html'), name='settings'), + re_path(r'^.*$', SettingsView.as_view(template_name='InvenTree/settings/settings.html'), name='settings'), ] notifications_urls = [ # Catch any other urls - url(r'^.*$', NotificationsView.as_view(), name='notifications'), + re_path(r'^.*$', NotificationsView.as_view(), name='notifications'), ] # These javascript files are served "dynamically" - i.e. rendered on demand dynamic_javascript_urls = [ - url(r'^calendar.js', DynamicJsView.as_view(template_name='js/dynamic/calendar.js'), name='calendar.js'), - url(r'^nav.js', DynamicJsView.as_view(template_name='js/dynamic/nav.js'), name='nav.js'), - url(r'^settings.js', DynamicJsView.as_view(template_name='js/dynamic/settings.js'), name='settings.js'), + re_path(r'^calendar.js', DynamicJsView.as_view(template_name='js/dynamic/calendar.js'), name='calendar.js'), + re_path(r'^nav.js', DynamicJsView.as_view(template_name='js/dynamic/nav.js'), name='nav.js'), + re_path(r'^settings.js', DynamicJsView.as_view(template_name='js/dynamic/settings.js'), name='settings.js'), ] # These javascript files are pased through the Django translation layer translated_javascript_urls = [ - url(r'^api.js', DynamicJsView.as_view(template_name='js/translated/api.js'), name='api.js'), - url(r'^attachment.js', DynamicJsView.as_view(template_name='js/translated/attachment.js'), name='attachment.js'), - url(r'^barcode.js', DynamicJsView.as_view(template_name='js/translated/barcode.js'), name='barcode.js'), - url(r'^bom.js', DynamicJsView.as_view(template_name='js/translated/bom.js'), name='bom.js'), - url(r'^build.js', DynamicJsView.as_view(template_name='js/translated/build.js'), name='build.js'), - url(r'^company.js', DynamicJsView.as_view(template_name='js/translated/company.js'), name='company.js'), - url(r'^filters.js', DynamicJsView.as_view(template_name='js/translated/filters.js'), name='filters.js'), - url(r'^forms.js', DynamicJsView.as_view(template_name='js/translated/forms.js'), name='forms.js'), - url(r'^helpers.js', DynamicJsView.as_view(template_name='js/translated/helpers.js'), name='helpers.js'), - url(r'^label.js', DynamicJsView.as_view(template_name='js/translated/label.js'), name='label.js'), - url(r'^model_renderers.js', DynamicJsView.as_view(template_name='js/translated/model_renderers.js'), name='model_renderers.js'), - url(r'^modals.js', DynamicJsView.as_view(template_name='js/translated/modals.js'), name='modals.js'), - url(r'^order.js', DynamicJsView.as_view(template_name='js/translated/order.js'), name='order.js'), - url(r'^part.js', DynamicJsView.as_view(template_name='js/translated/part.js'), name='part.js'), - url(r'^report.js', DynamicJsView.as_view(template_name='js/translated/report.js'), name='report.js'), - url(r'^search.js', DynamicJsView.as_view(template_name='js/translated/search.js'), name='search.js'), - url(r'^stock.js', DynamicJsView.as_view(template_name='js/translated/stock.js'), name='stock.js'), - url(r'^plugin.js', DynamicJsView.as_view(template_name='js/translated/plugin.js'), name='plugin.js'), - url(r'^tables.js', DynamicJsView.as_view(template_name='js/translated/tables.js'), name='tables.js'), - url(r'^table_filters.js', DynamicJsView.as_view(template_name='js/translated/table_filters.js'), name='table_filters.js'), - url(r'^notification.js', DynamicJsView.as_view(template_name='js/translated/notification.js'), name='notification.js'), + re_path(r'^api.js', DynamicJsView.as_view(template_name='js/translated/api.js'), name='api.js'), + re_path(r'^attachment.js', DynamicJsView.as_view(template_name='js/translated/attachment.js'), name='attachment.js'), + re_path(r'^barcode.js', DynamicJsView.as_view(template_name='js/translated/barcode.js'), name='barcode.js'), + re_path(r'^bom.js', DynamicJsView.as_view(template_name='js/translated/bom.js'), name='bom.js'), + re_path(r'^build.js', DynamicJsView.as_view(template_name='js/translated/build.js'), name='build.js'), + re_path(r'^company.js', DynamicJsView.as_view(template_name='js/translated/company.js'), name='company.js'), + re_path(r'^filters.js', DynamicJsView.as_view(template_name='js/translated/filters.js'), name='filters.js'), + re_path(r'^forms.js', DynamicJsView.as_view(template_name='js/translated/forms.js'), name='forms.js'), + re_path(r'^helpers.js', DynamicJsView.as_view(template_name='js/translated/helpers.js'), name='helpers.js'), + re_path(r'^label.js', DynamicJsView.as_view(template_name='js/translated/label.js'), name='label.js'), + re_path(r'^model_renderers.js', DynamicJsView.as_view(template_name='js/translated/model_renderers.js'), name='model_renderers.js'), + re_path(r'^modals.js', DynamicJsView.as_view(template_name='js/translated/modals.js'), name='modals.js'), + re_path(r'^order.js', DynamicJsView.as_view(template_name='js/translated/order.js'), name='order.js'), + re_path(r'^part.js', DynamicJsView.as_view(template_name='js/translated/part.js'), name='part.js'), + re_path(r'^report.js', DynamicJsView.as_view(template_name='js/translated/report.js'), name='report.js'), + re_path(r'^search.js', DynamicJsView.as_view(template_name='js/translated/search.js'), name='search.js'), + re_path(r'^stock.js', DynamicJsView.as_view(template_name='js/translated/stock.js'), name='stock.js'), + re_path(r'^plugin.js', DynamicJsView.as_view(template_name='js/translated/plugin.js'), name='plugin.js'), + re_path(r'^tables.js', DynamicJsView.as_view(template_name='js/translated/tables.js'), name='tables.js'), + re_path(r'^table_filters.js', DynamicJsView.as_view(template_name='js/translated/table_filters.js'), name='table_filters.js'), + re_path(r'^notification.js', DynamicJsView.as_view(template_name='js/translated/notification.js'), name='notification.js'), ] backendpatterns = [ # "Dynamic" javascript files which are rendered using InvenTree templating. - url(r'^js/dynamic/', include(dynamic_javascript_urls)), - url(r'^js/i18n/', include(translated_javascript_urls)), + re_path(r'^js/dynamic/', include(dynamic_javascript_urls)), + re_path(r'^js/i18n/', include(translated_javascript_urls)), - url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), - url(r'^auth/?', auth_request), + re_path(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), + re_path(r'^auth/?', auth_request), - url(r'^api/', include(apipatterns)), - url(r'^api-doc/', include_docs_urls(title='InvenTree API')), + re_path(r'^api/', include(apipatterns)), + re_path(r'^api-doc/', include_docs_urls(title='InvenTree API')), # 3rd party endpoints - url(r'^markdownx/', include('markdownx.urls')), + re_path(r'^markdownx/', include('markdownx.urls')), ] frontendpatterns = [ - url(r'^part/', include(part_urls)), - url(r'^manufacturer-part/', include(manufacturer_part_urls)), - url(r'^supplier-part/', include(supplier_part_urls)), + re_path(r'^part/', include(part_urls)), + re_path(r'^manufacturer-part/', include(manufacturer_part_urls)), + re_path(r'^supplier-part/', include(supplier_part_urls)), - url(r'^common/', include(common_urls)), + re_path(r'^common/', include(common_urls)), - url(r'^stock/', include(stock_urls)), + re_path(r'^stock/', include(stock_urls)), - url(r'^company/', include(company_urls)), - url(r'^order/', include(order_urls)), + re_path(r'^company/', include(company_urls)), + re_path(r'^order/', include(order_urls)), - url(r'^build/', include(build_urls)), + re_path(r'^build/', include(build_urls)), - url(r'^settings/', include(settings_urls)), + re_path(r'^settings/', include(settings_urls)), - url(r'^notifications/', include(notifications_urls)), + re_path(r'^notifications/', include(notifications_urls)), - url(r'^edit-user/', EditUserView.as_view(), name='edit-user'), - url(r'^set-password/', SetPasswordView.as_view(), name='set-password'), + re_path(r'^edit-user/', EditUserView.as_view(), name='edit-user'), + re_path(r'^set-password/', SetPasswordView.as_view(), name='set-password'), - url(r'^index/', IndexView.as_view(), name='index'), - url(r'^search/', SearchView.as_view(), name='search'), - url(r'^stats/', DatabaseStatsView.as_view(), name='stats'), + re_path(r'^index/', IndexView.as_view(), name='index'), + re_path(r'^search/', SearchView.as_view(), name='search'), + re_path(r'^stats/', DatabaseStatsView.as_view(), name='stats'), # admin sites - url(f'^{settings.INVENTREE_ADMIN_URL}/error_log/', include('error_report.urls')), - url(f'^{settings.INVENTREE_ADMIN_URL}/shell/', include('django_admin_shell.urls')), - url(f'^{settings.INVENTREE_ADMIN_URL}/', admin.site.urls, name='inventree-admin'), + re_path(f'^{settings.INVENTREE_ADMIN_URL}/error_log/', include('error_report.urls')), + re_path(f'^{settings.INVENTREE_ADMIN_URL}/shell/', include('django_admin_shell.urls')), + re_path(f'^{settings.INVENTREE_ADMIN_URL}/', admin.site.urls, name='inventree-admin'), # DB user sessions - url(r'^accounts/sessions/other/delete/$', view=CustomSessionDeleteOtherView.as_view(), name='session_delete_other', ), - url(r'^accounts/sessions/(?P\w+)/delete/$', view=CustomSessionDeleteView.as_view(), name='session_delete', ), + path('accounts/sessions/other/delete/', view=CustomSessionDeleteOtherView.as_view(), name='session_delete_other', ), + re_path(r'^accounts/sessions/(?P\w+)/delete/$', view=CustomSessionDeleteView.as_view(), name='session_delete', ), # Single Sign On / allauth # overrides of urlpatterns - url(r'^accounts/email/', CustomEmailView.as_view(), name='account_email'), - url(r'^accounts/social/connections/', CustomConnectionsView.as_view(), name='socialaccount_connections'), - url(r"^accounts/password/reset/key/(?P[0-9A-Za-z]+)-(?P.+)/$", CustomPasswordResetFromKeyView.as_view(), name="account_reset_password_from_key"), - url(r'^accounts/', include('allauth_2fa.urls')), # MFA support - url(r'^accounts/', include('allauth.urls')), # included urlpatterns + re_path(r'^accounts/email/', CustomEmailView.as_view(), name='account_email'), + re_path(r'^accounts/social/connections/', CustomConnectionsView.as_view(), name='socialaccount_connections'), + re_path(r"^accounts/password/reset/key/(?P[0-9A-Za-z]+)-(?P.+)/$", CustomPasswordResetFromKeyView.as_view(), name="account_reset_password_from_key"), + re_path(r'^accounts/', include('allauth_2fa.urls')), # MFA support + re_path(r'^accounts/', include('allauth.urls')), # included urlpatterns ] # Append custom plugin URLs (if plugin support is enabled) @@ -201,8 +200,8 @@ if settings.PLUGINS_ENABLED: frontendpatterns.append(get_plugin_urls()) urlpatterns = [ - url('', include(frontendpatterns)), - url('', include(backendpatterns)), + re_path('', include(frontendpatterns)), + re_path('', include(backendpatterns)), ] # Server running in "DEBUG" mode? @@ -221,4 +220,4 @@ if settings.DEBUG: ] + urlpatterns # Send any unknown URLs to the parts page -urlpatterns += [url(r'^.*$', RedirectView.as_view(url='/index/', permanent=False), name='index')] +urlpatterns += [re_path(r'^.*$', RedirectView.as_view(url='/index/', permanent=False), name='index')] diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index feb586c844..183e491580 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -34,8 +34,7 @@ from user_sessions.views import SessionDeleteView, SessionDeleteOtherView from common.settings import currency_code_default, currency_codes -from part.models import Part, PartCategory -from stock.models import StockLocation, StockItem +from part.models import PartCategory from common.models import InvenTreeSetting, ColorTheme from users.models import check_user_role, RuleSet @@ -882,29 +881,6 @@ class DatabaseStatsView(AjaxView): ajax_template_name = "stats.html" ajax_form_title = _("System Information") - def get_context_data(self, **kwargs): - - ctx = {} - - # Part stats - ctx['part_count'] = Part.objects.count() - ctx['part_cat_count'] = PartCategory.objects.count() - - # Stock stats - ctx['stock_item_count'] = StockItem.objects.count() - ctx['stock_loc_count'] = StockLocation.objects.count() - - """ - TODO: Other ideas for database metrics - - - "Popular" parts (used to make other parts?) - - Most ordered part - - Most sold part - - etc etc etc - """ - - return ctx - class NotificationsView(TemplateView): """ View for showing notifications diff --git a/InvenTree/barcodes/api.py b/InvenTree/barcodes/api.py index 047db357a4..f36e4b1703 100644 --- a/InvenTree/barcodes/api.py +++ b/InvenTree/barcodes/api.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from django.urls import reverse -from django.conf.urls import url -from django.utils.translation import ugettext_lazy as _ +from django.urls import path, re_path +from django.utils.translation import gettext_lazy as _ from rest_framework.exceptions import ValidationError from rest_framework import permissions @@ -240,8 +240,8 @@ class BarcodeAssign(APIView): barcode_api_urls = [ - url(r'^link/$', BarcodeAssign.as_view(), name='api-barcode-link'), + path('link/', BarcodeAssign.as_view(), name='api-barcode-link'), # Catch-all performs barcode 'scan' - url(r'^.*$', BarcodeScan.as_view(), name='api-barcode-scan'), + re_path(r'^.*$', BarcodeScan.as_view(), name='api-barcode-scan'), ] diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 33f3f4ab36..913a500d41 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -5,7 +5,7 @@ JSON API for the Build app # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.conf.urls import url, include +from django.urls import include, re_path from rest_framework import filters, generics @@ -96,6 +96,7 @@ class BuildList(generics.ListCreateAPIView): 'target_date', 'completion_date', 'quantity', + 'completed', 'issued_by', 'responsible', ] @@ -442,6 +443,18 @@ class BuildItemList(generics.ListCreateAPIView): if part_pk: queryset = queryset.filter(stock_item__part=part_pk) + # Filter by "tracked" status + # Tracked means that the item is "installed" into a build output (stock item) + tracked = params.get('tracked', None) + + if tracked is not None: + tracked = str2bool(tracked) + + if tracked: + queryset = queryset.exclude(install_into=None) + else: + queryset = queryset.filter(install_into=None) + # Filter by output target output = params.get('output', None) @@ -495,29 +508,29 @@ class BuildAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMix build_api_urls = [ # Attachments - url(r'^attachment/', include([ - url(r'^(?P\d+)/', BuildAttachmentDetail.as_view(), name='api-build-attachment-detail'), - url(r'^.*$', BuildAttachmentList.as_view(), name='api-build-attachment-list'), + re_path(r'^attachment/', include([ + re_path(r'^(?P\d+)/', BuildAttachmentDetail.as_view(), name='api-build-attachment-detail'), + re_path(r'^.*$', BuildAttachmentList.as_view(), name='api-build-attachment-list'), ])), # Build Items - url(r'^item/', include([ - url(r'^(?P\d+)/', BuildItemDetail.as_view(), name='api-build-item-detail'), - url(r'^.*$', BuildItemList.as_view(), name='api-build-item-list'), + re_path(r'^item/', include([ + re_path(r'^(?P\d+)/', BuildItemDetail.as_view(), name='api-build-item-detail'), + re_path(r'^.*$', BuildItemList.as_view(), name='api-build-item-list'), ])), # Build Detail - url(r'^(?P\d+)/', include([ - url(r'^allocate/', BuildAllocate.as_view(), name='api-build-allocate'), - url(r'^auto-allocate/', BuildAutoAllocate.as_view(), name='api-build-auto-allocate'), - url(r'^complete/', BuildOutputComplete.as_view(), name='api-build-output-complete'), - url(r'^create-output/', BuildOutputCreate.as_view(), name='api-build-output-create'), - url(r'^delete-outputs/', BuildOutputDelete.as_view(), name='api-build-output-delete'), - url(r'^finish/', BuildFinish.as_view(), name='api-build-finish'), - url(r'^unallocate/', BuildUnallocate.as_view(), name='api-build-unallocate'), - url(r'^.*$', BuildDetail.as_view(), name='api-build-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^allocate/', BuildAllocate.as_view(), name='api-build-allocate'), + re_path(r'^auto-allocate/', BuildAutoAllocate.as_view(), name='api-build-auto-allocate'), + re_path(r'^complete/', BuildOutputComplete.as_view(), name='api-build-output-complete'), + re_path(r'^create-output/', BuildOutputCreate.as_view(), name='api-build-output-create'), + re_path(r'^delete-outputs/', BuildOutputDelete.as_view(), name='api-build-output-delete'), + re_path(r'^finish/', BuildFinish.as_view(), name='api-build-finish'), + re_path(r'^unallocate/', BuildUnallocate.as_view(), name='api-build-unallocate'), + re_path(r'^.*$', BuildDetail.as_view(), name='api-build-detail'), ])), # Build List - url(r'^.*$', BuildList.as_view(), name='api-build-list'), + re_path(r'^.*$', BuildList.as_view(), name='api-build-list'), ] diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index eaae0636c9..08714b0f3c 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -6,7 +6,7 @@ Django Forms for interacting with Build objects from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django import forms from InvenTree.forms import HelperForm diff --git a/InvenTree/build/migrations/0029_auto_20210601_1525.py b/InvenTree/build/migrations/0029_auto_20210601_1525.py index 12ec66960c..5470416dcd 100644 --- a/InvenTree/build/migrations/0029_auto_20210601_1525.py +++ b/InvenTree/build/migrations/0029_auto_20210601_1525.py @@ -17,8 +17,6 @@ def assign_bom_items(apps, schema_editor): BuildItem = apps.get_model('build', 'builditem') BomItem = apps.get_model('part', 'bomitem') Part = apps.get_model('part', 'part') - - logger.info("Assigning BomItems to existing BuildItem objects") count_valid = 0 count_total = 0 @@ -29,6 +27,10 @@ def assign_bom_items(apps, schema_editor): # Note: Before this migration, variant stock assignment was not allowed, # so BomItem lookup should be pretty easy + if count_total == 0: + # First time around + logger.info("Assigning BomItems to existing BuildItem objects") + count_total += 1 try: diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index e5189e6073..1fdf613b68 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -18,7 +18,7 @@ from django.db.models.functions import Coalesce from django.db.models.signals import post_save from django.dispatch.dispatcher import receiver from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from markdownx.models import MarkdownxField @@ -53,7 +53,7 @@ def get_next_build_number(): build = Build.objects.exclude(reference=None).last() - attempts = set([build.reference]) + attempts = {build.reference} reference = build.reference @@ -1260,7 +1260,7 @@ class BuildItem(models.Model): }) @transaction.atomic - def complete_allocation(self, user): + def complete_allocation(self, user, notes=''): """ Complete the allocation of this BuildItem into the output stock item. @@ -1286,8 +1286,13 @@ class BuildItem(models.Model): self.save() # Install the stock item into the output - item.belongs_to = self.install_into - item.save() + self.install_into.installStockItem( + item, + self.quantity, + user, + notes + ) + else: # Simply remove the items from stock item.take_stock( diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 4b55182563..07a0bcc29a 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from django.db import transaction from django.core.exceptions import ValidationError as DjangoValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.db.models import Case, When, Value from django.db.models import BooleanField @@ -161,7 +161,12 @@ class BuildOutputSerializer(serializers.Serializer): # The build output must have all tracked parts allocated if not build.is_fully_allocated(output): - raise ValidationError(_("This build output is not fully allocated")) + + # Check if the user has specified that incomplete allocations are ok + accept_incomplete = InvenTree.helpers.str2bool(self.context['request'].data.get('accept_incomplete_allocation', False)) + + if not accept_incomplete: + raise ValidationError(_("This build output is not fully allocated")) return output @@ -355,6 +360,7 @@ class BuildOutputCompleteSerializer(serializers.Serializer): 'outputs', 'location', 'status', + 'accept_incomplete_allocation', 'notes', ] @@ -377,6 +383,13 @@ class BuildOutputCompleteSerializer(serializers.Serializer): label=_("Status"), ) + accept_incomplete_allocation = serializers.BooleanField( + default=False, + required=False, + label=_('Accept Incomplete Allocation'), + help_text=_('Complete ouputs if stock has not been fully allocated'), + ) + notes = serializers.CharField( label=_("Notes"), required=False, @@ -617,6 +630,7 @@ class BuildAllocationItemSerializer(serializers.Serializer): super().validate(data) + build = self.context['build'] bom_item = data['bom_item'] stock_item = data['stock_item'] quantity = data['quantity'] @@ -641,16 +655,20 @@ class BuildAllocationItemSerializer(serializers.Serializer): # Output *must* be set for trackable parts if output is None and bom_item.sub_part.trackable: raise ValidationError({ - 'output': _('Build output must be specified for allocation of tracked parts') + 'output': _('Build output must be specified for allocation of tracked parts'), }) # Output *cannot* be set for un-tracked parts if output is not None and not bom_item.sub_part.trackable: raise ValidationError({ - 'output': _('Build output cannot be specified for allocation of untracked parts') + 'output': _('Build output cannot be specified for allocation of untracked parts'), }) + # Check if this allocation would be unique + if BuildItem.objects.filter(build=build, stock_item=stock_item, install_into=output).exists(): + raise ValidationError(_('This stock item has already been allocated to this build output')) + return data diff --git a/InvenTree/build/tasks.py b/InvenTree/build/tasks.py index 6752bc5501..b69057d444 100644 --- a/InvenTree/build/tasks.py +++ b/InvenTree/build/tasks.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from decimal import Decimal import logging -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.template.loader import render_to_string from allauth.account.models import EmailAddress diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index 92e1177e0f..42bc51bb2f 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -270,6 +270,16 @@ + {% if build.has_tracked_bom_items %} + + + + {% endif %} + {% include "filter_list.html" with id='incompletebuilditems' %} {% endif %} @@ -401,110 +411,53 @@ function reloadTable() { $('#allocation-table-untracked').bootstrapTable('refresh'); } -// Get the list of BOM items required for this build -inventreeGet( - '{% url "api-bom-list" %}', - { +onPanelLoad('outputs', function() { + {% if build.active %} + + var build_info = { + pk: {{ build.pk }}, part: {{ build.part.pk }}, - sub_part_detail: true, - }, - { - success: function(response) { + quantity: {{ build.quantity }}, + {% if build.take_from %} + source_location: {{ build.take_from.pk }}, + {% endif %} + tracked_parts: true, + }; - var build_info = { - pk: {{ build.pk }}, - part: {{ build.part.pk }}, - quantity: {{ build.quantity }}, - bom_items: response, - {% if build.take_from %} - source_location: {{ build.take_from.pk }}, - {% endif %} - {% if build.has_tracked_bom_items %} - tracked_parts: true, - {% else %} - tracked_parts: false, - {% endif %} - }; + loadBuildOutputTable(build_info); - {% if build.active %} - loadBuildOutputTable(build_info); - linkButtonsToSelection( - '#build-output-table', - [ - '#output-options', - '#multi-output-complete', - '#multi-output-delete', - ] - ); + {% endif %} +}); - $('#multi-output-complete').click(function() { - var outputs = $('#build-output-table').bootstrapTable('getSelections'); +{% if build.active and build.has_untracked_bom_items %} - completeBuildOutputs( - build_info.pk, - outputs, - { - success: function() { - // Reload the "in progress" table - $('#build-output-table').bootstrapTable('refresh'); +function loadUntrackedStockTable() { - // Reload the "completed" table - $('#build-stock-table').bootstrapTable('refresh'); - } - } - ); - }); + var build_info = { + pk: {{ build.pk }}, + part: {{ build.part.pk }}, + quantity: {{ build.quantity }}, + {% if build.take_from %} + source_location: {{ build.take_from.pk }}, + {% endif %} + tracked_parts: false, + }; + + $('#allocation-table-untracked').bootstrapTable('destroy'); - $('#multi-output-delete').click(function() { - var outputs = $('#build-output-table').bootstrapTable('getSelections'); - - deleteBuildOutputs( - build_info.pk, - outputs, - { - success: function() { - // Reload the "in progress" table - $('#build-output-table').bootstrapTable('refresh'); - - // Reload the "completed" table - $('#build-stock-table').bootstrapTable('refresh'); - } - } - ) - }); - - $('#incomplete-output-print-label').click(function() { - var outputs = $('#build-output-table').bootstrapTable('getSelections'); - - if (outputs.length == 0) { - outputs = $('#build-output-table').bootstrapTable('getData'); - } - - var stock_id_values = []; - - outputs.forEach(function(output) { - stock_id_values.push(output.pk); - }); - - printStockItemLabels(stock_id_values); - - }); - - {% endif %} - - {% if build.active and build.has_untracked_bom_items %} - // Load allocation table for un-tracked parts - loadBuildOutputAllocationTable( - build_info, - null, - { - search: true, - } - ); - {% endif %} + // Load allocation table for un-tracked parts + loadBuildOutputAllocationTable( + build_info, + null, + { + search: true, } - } -); + ); +} + +loadUntrackedStockTable(); + +{% endif %} $('#btn-create-output').click(function() { @@ -527,6 +480,7 @@ $("#btn-auto-allocate").on('click', function() { {% if build.take_from %} location: {{ build.take_from.pk }}, {% endif %} + onSuccess: loadUntrackedStockTable, } ); }); @@ -558,9 +512,7 @@ $("#btn-allocate").on('click', function() { {% if build.take_from %} source_location: {{ build.take_from.pk }}, {% endif %} - success: function(data) { - $('#allocation-table-untracked').bootstrapTable('refresh'); - } + success: loadUntrackedStockTable, } ); } @@ -569,6 +521,7 @@ $("#btn-allocate").on('click', function() { $('#btn-unallocate').on('click', function() { unallocateStock({{ build.id }}, { table: '#allocation-table-untracked', + onSuccess: loadUntrackedStockTable, }); }); @@ -588,9 +541,7 @@ $('#allocate-selected-items').click(function() { {% if build.take_from %} source_location: {{ build.take_from.pk }}, {% endif %} - success: function(data) { - $('#allocation-table-untracked').bootstrapTable('refresh'); - } + success: loadUntrackedStockTable, } ); }); diff --git a/InvenTree/build/urls.py b/InvenTree/build/urls.py index 0058e8a527..520d97ef6a 100644 --- a/InvenTree/build/urls.py +++ b/InvenTree/build/urls.py @@ -2,20 +2,20 @@ URL lookup for Build app """ -from django.conf.urls import url, include +from django.urls import include, re_path from . import views build_detail_urls = [ - url(r'^cancel/', views.BuildCancel.as_view(), name='build-cancel'), - url(r'^delete/', views.BuildDelete.as_view(), name='build-delete'), + re_path(r'^cancel/', views.BuildCancel.as_view(), name='build-cancel'), + re_path(r'^delete/', views.BuildDelete.as_view(), name='build-delete'), - url(r'^.*$', views.BuildDetail.as_view(), name='build-detail'), + re_path(r'^.*$', views.BuildDetail.as_view(), name='build-detail'), ] build_urls = [ - url(r'^(?P\d+)/', include(build_detail_urls)), + re_path(r'^(?P\d+)/', include(build_detail_urls)), - url(r'.*$', views.BuildIndex.as_view(), name='build-index'), + re_path(r'.*$', views.BuildIndex.as_view(), name='build-index'), ] diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py index 37fb024940..2b8629afe9 100644 --- a/InvenTree/build/views.py +++ b/InvenTree/build/views.py @@ -5,7 +5,7 @@ Django views for interacting with Build objects # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import DetailView, ListView from .models import Build diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index d725799894..2f7f3e2ca8 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -11,7 +11,7 @@ from django.http.response import HttpResponse from django.utils.decorators import method_decorator from django.urls import path from django.views.decorators.csrf import csrf_exempt -from django.conf.urls import url, include +from django.urls import include, re_path from rest_framework.views import APIView from rest_framework.response import Response @@ -336,21 +336,21 @@ class NotificationReadAll(generics.RetrieveAPIView): settings_api_urls = [ # User settings - url(r'^user/', include([ + re_path(r'^user/', include([ # User Settings Detail - url(r'^(?P\d+)/', UserSettingsDetail.as_view(), name='api-user-setting-detail'), + re_path(r'^(?P\d+)/', UserSettingsDetail.as_view(), name='api-user-setting-detail'), # User Settings List - url(r'^.*$', UserSettingsList.as_view(), name='api-user-setting-list'), + re_path(r'^.*$', UserSettingsList.as_view(), name='api-user-setting-list'), ])), # Global settings - url(r'^global/', include([ + re_path(r'^global/', include([ # Global Settings Detail - url(r'^(?P\d+)/', GlobalSettingsDetail.as_view(), name='api-global-setting-detail'), + re_path(r'^(?P\d+)/', GlobalSettingsDetail.as_view(), name='api-global-setting-detail'), # Global Settings List - url(r'^.*$', GlobalSettingsList.as_view(), name='api-global-setting-list'), + re_path(r'^.*$', GlobalSettingsList.as_view(), name='api-global-setting-list'), ])), ] @@ -359,18 +359,18 @@ common_api_urls = [ path('webhook//', WebhookView.as_view(), name='api-webhook'), # Notifications - url(r'^notifications/', include([ + re_path(r'^notifications/', include([ # Individual purchase order detail URLs - url(r'^(?P\d+)/', include([ - url(r'^read/', NotificationRead.as_view(), name='api-notifications-read'), - url(r'^unread/', NotificationUnread.as_view(), name='api-notifications-unread'), - url(r'.*$', NotificationDetail.as_view(), name='api-notifications-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^read/', NotificationRead.as_view(), name='api-notifications-read'), + re_path(r'^unread/', NotificationUnread.as_view(), name='api-notifications-unread'), + re_path(r'.*$', NotificationDetail.as_view(), name='api-notifications-detail'), ])), # Read all - url(r'^readall/', NotificationReadAll.as_view(), name='api-notifications-readall'), + re_path(r'^readall/', NotificationReadAll.as_view(), name='api-notifications-readall'), # Notification messages list - url(r'^.*$', NotificationList.as_view(), name='api-notifications-list'), + re_path(r'^.*$', NotificationList.as_view(), name='api-notifications-list'), ])), ] diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 8bd100dcc9..9dac93d28e 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -33,7 +33,7 @@ from djmoney.contrib.exchange.exceptions import MissingRate from rest_framework.exceptions import PermissionDenied -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator, URLValidator from django.core.exceptions import ValidationError @@ -406,6 +406,13 @@ class BaseInvenTreeSetting(models.Model): super().clean() + # Encode as native values + if self.is_int(): + self.value = self.as_int() + + elif self.is_bool(): + self.value = self.as_bool() + validator = self.__class__.get_setting_validator(self.key, **kwargs) if validator is not None: @@ -455,7 +462,14 @@ class BaseInvenTreeSetting(models.Model): if callable(validator): # We can accept function validators with a single argument - validator(self.value) + + if self.is_bool(): + value = self.as_bool() + + if self.is_int(): + value = self.as_int() + + validator(value) def validate_unique(self, exclude=None, **kwargs): """ @@ -629,6 +643,10 @@ class BaseInvenTreeSetting(models.Model): return setting.get('protected', False) + @property + def protected(self): + return self.__class__.is_protected(self.key) + def settings_group_options(): """ @@ -684,7 +702,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): }, 'INVENTREE_INSTANCE': { - 'name': _('InvenTree Instance Name'), + 'name': _('Server Instance Name'), 'default': 'InvenTree server', 'description': _('String descriptor for the server instance'), }, @@ -696,6 +714,13 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, }, + 'INVENTREE_RESTRICT_ABOUT': { + 'name': _('Restrict showing `about`'), + 'description': _('Show the `about` modal only to superusers'), + 'validator': bool, + 'default': False, + }, + 'INVENTREE_COMPANY_NAME': { 'name': _('Company name'), 'description': _('Internal company name'), @@ -1004,48 +1029,56 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': True, 'validator': bool, }, + 'LOGIN_ENABLE_REG': { 'name': _('Enable registration'), 'description': _('Enable self-registration for users on the login pages'), 'default': False, 'validator': bool, }, + 'LOGIN_ENABLE_SSO': { 'name': _('Enable SSO'), 'description': _('Enable SSO on the login pages'), 'default': False, 'validator': bool, }, + 'LOGIN_MAIL_REQUIRED': { 'name': _('Email required'), 'description': _('Require user to supply mail on signup'), 'default': False, 'validator': bool, }, + 'LOGIN_SIGNUP_SSO_AUTO': { 'name': _('Auto-fill SSO users'), 'description': _('Automatically fill out user-details from SSO account-data'), 'default': True, 'validator': bool, }, + 'LOGIN_SIGNUP_MAIL_TWICE': { 'name': _('Mail twice'), 'description': _('On signup ask users twice for their mail'), 'default': False, 'validator': bool, }, + 'LOGIN_SIGNUP_PWD_TWICE': { 'name': _('Password twice'), 'description': _('On signup ask users twice for their password'), 'default': True, 'validator': bool, }, + 'SIGNUP_GROUP': { 'name': _('Group on signup'), 'description': _('Group to which new users are assigned on registration'), 'default': '', 'choices': settings_group_options }, + 'LOGIN_ENFORCE_MFA': { 'name': _('Enforce MFA'), 'description': _('Users must use multifactor security.'), @@ -1060,6 +1093,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + # Settings for plugin mixin features 'ENABLE_PLUGINS_URL': { 'name': _('Enable URL integration'), @@ -1068,6 +1102,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + 'ENABLE_PLUGINS_NAVIGATION': { 'name': _('Enable navigation integration'), 'description': _('Enable plugins to integrate into navigation'), @@ -1075,6 +1110,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + 'ENABLE_PLUGINS_APP': { 'name': _('Enable app integration'), 'description': _('Enable plugins to add apps'), @@ -1082,6 +1118,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + 'ENABLE_PLUGINS_SCHEDULE': { 'name': _('Enable schedule integration'), 'description': _('Enable plugins to run scheduled tasks'), @@ -1089,6 +1126,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + 'ENABLE_PLUGINS_EVENTS': { 'name': _('Enable event integration'), 'description': _('Enable plugins to respond to internal events'), @@ -1142,18 +1180,21 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'default': True, 'validator': bool, }, + 'HOMEPAGE_CATEGORY_STARRED': { 'name': _('Show subscribed categories'), 'description': _('Show subscribed part categories on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_PART_LATEST': { 'name': _('Show latest parts'), 'description': _('Show latest parts on the homepage'), 'default': True, 'validator': bool, }, + 'PART_RECENT_COUNT': { 'name': _('Recent Part Count'), 'description': _('Number of recent parts to display on index page'), @@ -1167,78 +1208,91 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'default': True, 'validator': bool, }, + 'HOMEPAGE_STOCK_RECENT': { 'name': _('Show recent stock changes'), 'description': _('Show recently changed stock items on the homepage'), 'default': True, 'validator': bool, }, + 'STOCK_RECENT_COUNT': { 'name': _('Recent Stock Count'), 'description': _('Number of recent stock items to display on index page'), 'default': 10, 'validator': [int, MinValueValidator(1)] }, + 'HOMEPAGE_STOCK_LOW': { 'name': _('Show low stock'), 'description': _('Show low stock items on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_STOCK_DEPLETED': { 'name': _('Show depleted stock'), 'description': _('Show depleted stock items on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_STOCK_NEEDED': { 'name': _('Show needed stock'), 'description': _('Show stock items needed for builds on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_STOCK_EXPIRED': { 'name': _('Show expired stock'), 'description': _('Show expired stock items on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_STOCK_STALE': { 'name': _('Show stale stock'), 'description': _('Show stale stock items on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_BUILD_PENDING': { 'name': _('Show pending builds'), 'description': _('Show pending builds on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_BUILD_OVERDUE': { 'name': _('Show overdue builds'), 'description': _('Show overdue builds on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_PO_OUTSTANDING': { 'name': _('Show outstanding POs'), 'description': _('Show outstanding POs on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_PO_OVERDUE': { 'name': _('Show overdue POs'), 'description': _('Show overdue POs on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_SO_OUTSTANDING': { 'name': _('Show outstanding SOs'), 'description': _('Show outstanding SOs on the homepage'), 'default': True, 'validator': bool, }, + 'HOMEPAGE_SO_OVERDUE': { 'name': _('Show overdue SOs'), 'description': _('Show overdue SOs on the homepage'), @@ -1353,7 +1407,7 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'STICKY_HEADER': { 'name': _('Fixed Navbar'), - 'description': _('InvenTree navbar position is fixed to the top of the screen'), + 'description': _('The navbar position is fixed to the top of the screen'), 'default': False, 'validator': bool, }, diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index 71ccac8a4d..86d45cd881 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -50,11 +50,12 @@ class SettingsSerializer(InvenTreeModelSerializer): """ Make sure protected values are not returned """ - result = obj.value # never return protected values - if obj.is_protected: + if obj.protected: result = '***' + else: + result = obj.value return result diff --git a/InvenTree/common/test_tasks.py b/InvenTree/common/test_tasks.py index 4a3da9c028..3f85316c41 100644 --- a/InvenTree/common/test_tasks.py +++ b/InvenTree/common/test_tasks.py @@ -1,4 +1,3 @@ - # -*- coding: utf-8 -*- from django.test import TestCase diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index 77a4f1a12d..e2966fb8d5 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -9,7 +9,9 @@ from django.contrib.auth import get_user_model from django.urls import reverse from InvenTree.api_tester import InvenTreeAPITestCase -from .models import InvenTreeSetting, WebhookEndpoint, WebhookMessage, NotificationEntry +from InvenTree.helpers import str2bool + +from .models import InvenTreeSetting, InvenTreeUserSetting, WebhookEndpoint, WebhookMessage, NotificationEntry from .api import WebhookView CONTENT_TYPE_JSON = 'application/json' @@ -63,8 +65,8 @@ class SettingsTest(TestCase): report_test_obj = InvenTreeSetting.get_setting_object('REPORT_ENABLE_TEST_REPORT') # check settings base fields - self.assertEqual(instance_obj.name, 'InvenTree Instance Name') - self.assertEqual(instance_obj.get_setting_name(instance_ref), 'InvenTree Instance Name') + self.assertEqual(instance_obj.name, 'Server Instance Name') + self.assertEqual(instance_obj.get_setting_name(instance_ref), 'Server Instance Name') self.assertEqual(instance_obj.description, 'String descriptor for the server instance') self.assertEqual(instance_obj.get_setting_description(instance_ref), 'String descriptor for the server instance') @@ -156,13 +158,224 @@ class SettingsTest(TestCase): raise ValueError(f'Non-boolean default value specified for {key}') # pragma: no cover -class SettingsApiTest(InvenTreeAPITestCase): +class GlobalSettingsApiTest(InvenTreeAPITestCase): + """ + Tests for the global settings API + """ - def test_settings_api(self): - # test setting with choice + def test_global_settings_api_list(self): + """ + Test list URL for global settings + """ + url = reverse('api-global-setting-list') + + # Read out each of the global settings value, to ensure they are instantiated in the database + for key in InvenTreeSetting.SETTINGS: + InvenTreeSetting.get_setting_object(key) + + response = self.get(url, expected_code=200) + + # Number of results should match the number of settings + self.assertEqual(len(response.data), len(InvenTreeSetting.SETTINGS.keys())) + + def test_company_name(self): + + setting = InvenTreeSetting.get_setting_object('INVENTREE_COMPANY_NAME') + + # Check default value + self.assertEqual(setting.value, 'My company name') + + url = reverse('api-global-setting-detail', kwargs={'pk': setting.pk}) + + # Test getting via the API + for val in ['test', '123', 'My company nam3']: + setting.value = val + setting.save() + + response = self.get(url, expected_code=200) + + self.assertEqual(response.data['value'], val) + + # Test setting via the API + for val in ['cat', 'hat', 'bat', 'mat']: + response = self.patch( + url, + { + 'value': val, + }, + expected_code=200 + ) + + self.assertEqual(response.data['value'], val) + + setting.refresh_from_db() + self.assertEqual(setting.value, val) + + +class UserSettingsApiTest(InvenTreeAPITestCase): + """ + Tests for the user settings API + """ + + def test_user_settings_api_list(self): + """ + Test list URL for user settings + """ url = reverse('api-user-setting-list') + self.get(url, expected_code=200) + def test_user_setting_boolean(self): + """ + Test a boolean user setting value + """ + + # Ensure we have a boolean setting available + setting = InvenTreeUserSetting.get_setting_object( + 'SEARCH_PREVIEW_SHOW_PARTS', + user=self.user + ) + + # Check default values + self.assertEqual(setting.to_native_value(), True) + + # Fetch via API + url = reverse('api-user-setting-detail', kwargs={'pk': setting.pk}) + + response = self.get(url, expected_code=200) + + self.assertEqual(response.data['pk'], setting.pk) + self.assertEqual(response.data['key'], 'SEARCH_PREVIEW_SHOW_PARTS') + self.assertEqual(response.data['description'], 'Display parts in search preview window') + self.assertEqual(response.data['type'], 'boolean') + self.assertEqual(len(response.data['choices']), 0) + self.assertTrue(str2bool(response.data['value'])) + + # Assign some truthy values + for v in ['true', True, 1, 'y', 'TRUE']: + self.patch( + url, + { + 'value': str(v), + }, + expected_code=200, + ) + + response = self.get(url, expected_code=200) + + self.assertTrue(str2bool(response.data['value'])) + + # Assign some falsey values + for v in ['false', False, '0', 'n', 'FalSe']: + self.patch( + url, + { + 'value': str(v), + }, + expected_code=200, + ) + + response = self.get(url, expected_code=200) + + self.assertFalse(str2bool(response.data['value'])) + + # Assign some invalid values + for v in ['x', '', 'invalid', None, '-1', 'abcde']: + response = self.patch( + url, + { + 'value': str(v), + }, + expected_code=200 + ) + + # Invalid values evaluate to False + self.assertFalse(str2bool(response.data['value'])) + + def test_user_setting_choice(self): + + setting = InvenTreeUserSetting.get_setting_object( + 'DATE_DISPLAY_FORMAT', + user=self.user + ) + + url = reverse('api-user-setting-detail', kwargs={'pk': setting.pk}) + + # Check default value + self.assertEqual(setting.value, 'YYYY-MM-DD') + + # Check that a valid option can be assigned via the API + for opt in ['YYYY-MM-DD', 'DD-MM-YYYY', 'MM/DD/YYYY']: + + self.patch( + url, + { + 'value': opt, + }, + expected_code=200, + ) + + setting.refresh_from_db() + self.assertEqual(setting.value, opt) + + # Send an invalid option + for opt in ['cat', 'dog', 12345]: + + response = self.patch( + url, + { + 'value': opt, + }, + expected_code=400, + ) + + self.assertIn('Chosen value is not a valid option', str(response.data)) + + def test_user_setting_integer(self): + + setting = InvenTreeUserSetting.get_setting_object( + 'SEARCH_PREVIEW_RESULTS', + user=self.user + ) + + url = reverse('api-user-setting-detail', kwargs={'pk': setting.pk}) + + # Check default value for this setting + self.assertEqual(setting.value, 10) + + for v in [1, 9, 99]: + setting.value = v + setting.save() + + response = self.get(url) + + self.assertEqual(response.data['value'], str(v)) + + # Set valid options via the api + for v in [5, 15, 25]: + self.patch( + url, + { + 'value': v, + }, + expected_code=200, + ) + + setting.refresh_from_db() + self.assertEqual(setting.to_native_value(), v) + + # Set invalid options via the API + # Note that this particular setting has a MinValueValidator(1) associated with it + for v in [0, -1, -5]: + + response = self.patch( + url, + { + 'value': v, + }, + expected_code=400, + ) + class WebhookMessageTests(TestCase): def setUp(self): diff --git a/InvenTree/common/views.py b/InvenTree/common/views.py index 4b8310ddd2..7fae6f3710 100644 --- a/InvenTree/common/views.py +++ b/InvenTree/common/views.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals import os -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings from django.core.files.storage import FileSystemStorage diff --git a/InvenTree/company/api.py b/InvenTree/company/api.py index 83d24e0858..e4a589d9e5 100644 --- a/InvenTree/company/api.py +++ b/InvenTree/company/api.py @@ -11,7 +11,7 @@ from django_filters import rest_framework as rest_filters from rest_framework import filters from rest_framework import generics -from django.conf.urls import url, include +from django.urls import include, re_path from django.db.models import Q from InvenTree.helpers import str2bool @@ -390,42 +390,42 @@ class SupplierPriceBreakDetail(generics.RetrieveUpdateDestroyAPIView): manufacturer_part_api_urls = [ - url(r'^parameter/', include([ - url(r'^(?P\d+)/', ManufacturerPartParameterDetail.as_view(), name='api-manufacturer-part-parameter-detail'), + re_path(r'^parameter/', include([ + re_path(r'^(?P\d+)/', ManufacturerPartParameterDetail.as_view(), name='api-manufacturer-part-parameter-detail'), # Catch anything else - url(r'^.*$', ManufacturerPartParameterList.as_view(), name='api-manufacturer-part-parameter-list'), + re_path(r'^.*$', ManufacturerPartParameterList.as_view(), name='api-manufacturer-part-parameter-list'), ])), - url(r'^(?P\d+)/?', ManufacturerPartDetail.as_view(), name='api-manufacturer-part-detail'), + re_path(r'^(?P\d+)/?', ManufacturerPartDetail.as_view(), name='api-manufacturer-part-detail'), # Catch anything else - url(r'^.*$', ManufacturerPartList.as_view(), name='api-manufacturer-part-list'), + re_path(r'^.*$', ManufacturerPartList.as_view(), name='api-manufacturer-part-list'), ] supplier_part_api_urls = [ - url(r'^(?P\d+)/?', SupplierPartDetail.as_view(), name='api-supplier-part-detail'), + re_path(r'^(?P\d+)/?', SupplierPartDetail.as_view(), name='api-supplier-part-detail'), # Catch anything else - url(r'^.*$', SupplierPartList.as_view(), name='api-supplier-part-list'), + re_path(r'^.*$', SupplierPartList.as_view(), name='api-supplier-part-list'), ] company_api_urls = [ - url(r'^part/manufacturer/', include(manufacturer_part_api_urls)), + re_path(r'^part/manufacturer/', include(manufacturer_part_api_urls)), - url(r'^part/', include(supplier_part_api_urls)), + re_path(r'^part/', include(supplier_part_api_urls)), # Supplier price breaks - url(r'^price-break/', include([ + re_path(r'^price-break/', include([ - url(r'^(?P\d+)/?', SupplierPriceBreakDetail.as_view(), name='api-part-supplier-price-detail'), - url(r'^.*$', SupplierPriceBreakList.as_view(), name='api-part-supplier-price-list'), + re_path(r'^(?P\d+)/?', SupplierPriceBreakDetail.as_view(), name='api-part-supplier-price-detail'), + re_path(r'^.*$', SupplierPriceBreakList.as_view(), name='api-part-supplier-price-list'), ])), - url(r'^(?P\d+)/?', CompanyDetail.as_view(), name='api-company-detail'), + re_path(r'^(?P\d+)/?', CompanyDetail.as_view(), name='api-company-detail'), - url(r'^.*$', CompanyList.as_view(), name='api-company-list'), + re_path(r'^.*$', CompanyList.as_view(), name='api-company-list'), ] diff --git a/InvenTree/company/forms.py b/InvenTree/company/forms.py index 506133df00..5549f66222 100644 --- a/InvenTree/company/forms.py +++ b/InvenTree/company/forms.py @@ -8,7 +8,7 @@ from __future__ import unicode_literals from InvenTree.forms import HelperForm from InvenTree.fields import RoundingDecimalFormField -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import django.forms from .models import Company diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index f72668f9f0..fff38a8e99 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals import os -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError @@ -637,7 +637,7 @@ class SupplierPart(models.Model): get_price = common.models.get_price def open_orders(self): - """ Return a database query for PO line items for this SupplierPart, + """ Return a database query for PurchaseOrder line items for this SupplierPart, limited to purchase orders that are open / outstanding. """ diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index 736e379c8a..236dcc15db 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -2,7 +2,7 @@ JSON serializers for Company app """ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers diff --git a/InvenTree/company/templates/company/manufacturer_part.html b/InvenTree/company/templates/company/manufacturer_part.html index 84e8016a59..fb33128a77 100644 --- a/InvenTree/company/templates/company/manufacturer_part.html +++ b/InvenTree/company/templates/company/manufacturer_part.html @@ -1,9 +1,10 @@ {% extends "page_base.html" %} {% load static %} {% load i18n %} +{% load inventree_extras %} {% block page_title %} -InvenTree | {% trans "Manufacturer Part" %} +{% inventree_title %} | {% trans "Manufacturer Part" %} {% endblock %} {% block sidebar %} diff --git a/InvenTree/company/urls.py b/InvenTree/company/urls.py index 377a37706d..25ebdbb771 100644 --- a/InvenTree/company/urls.py +++ b/InvenTree/company/urls.py @@ -2,37 +2,37 @@ URL lookup for Company app """ -from django.conf.urls import url, include +from django.urls import include, re_path from . import views company_detail_urls = [ - url(r'^thumb-download/', views.CompanyImageDownloadFromURL.as_view(), name='company-image-download'), + re_path(r'^thumb-download/', views.CompanyImageDownloadFromURL.as_view(), name='company-image-download'), # Any other URL - url(r'^.*$', views.CompanyDetail.as_view(), name='company-detail'), + re_path(r'^.*$', views.CompanyDetail.as_view(), name='company-detail'), ] company_urls = [ - url(r'^(?P\d+)/', include(company_detail_urls)), + re_path(r'^(?P\d+)/', include(company_detail_urls)), - url(r'suppliers/', views.CompanyIndex.as_view(), name='supplier-index'), - url(r'manufacturers/', views.CompanyIndex.as_view(), name='manufacturer-index'), - url(r'customers/', views.CompanyIndex.as_view(), name='customer-index'), + re_path(r'suppliers/', views.CompanyIndex.as_view(), name='supplier-index'), + re_path(r'manufacturers/', views.CompanyIndex.as_view(), name='manufacturer-index'), + re_path(r'customers/', views.CompanyIndex.as_view(), name='customer-index'), # Redirect any other patterns to the 'company' index which displays all companies - url(r'^.*$', views.CompanyIndex.as_view(), name='company-index'), + re_path(r'^.*$', views.CompanyIndex.as_view(), name='company-index'), ] manufacturer_part_urls = [ - url(r'^(?P\d+)/', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part.html'), name='manufacturer-part-detail'), + re_path(r'^(?P\d+)/', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part.html'), name='manufacturer-part-detail'), ] supplier_part_urls = [ - url(r'^(?P\d+)/', views.SupplierPartDetail.as_view(template_name='company/supplier_part.html'), name='supplier-part-detail'), + re_path(r'^(?P\d+)/', views.SupplierPartDetail.as_view(template_name='company/supplier_part.html'), name='supplier-part-detail'), ] diff --git a/InvenTree/company/views.py b/InvenTree/company/views.py index f3a9af7628..8c23002800 100644 --- a/InvenTree/company/views.py +++ b/InvenTree/company/views.py @@ -6,7 +6,7 @@ Django views for interacting with Company app # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import DetailView, ListView from django.urls import reverse diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 65dd20d3e8..cad7012ebe 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -154,6 +154,14 @@ static_root: '/home/inventree/data/static' # Use environment variable INVENTREE_LOGIN_ATTEMPTS #login_attempts: 5 +# Remote / proxy login +# These settings can introduce security problems if configured incorrectly. Please read +# https://docs.djangoproject.com/en/4.0/howto/auth-remote-user/ for more details +# Use environment variable INVENTREE_REMOTE_LOGIN +# remote_login: True +# Use environment variable INVENTREE_REMOTE_LOGIN_HEADER +# remote_login_header: REMOTE_USER + # Add new user on first startup #admin_user: admin #admin_email: info@example.com @@ -186,3 +194,12 @@ static_root: '/home/inventree/data/static' # KEYCLOAK_URL: 'https://keycloak.custom/auth' # KEYCLOAK_REALM: 'master' +# Customization options +# Add custom messages to the login page or main interface navbar or exchange the logo +# Use environment variable INVENTREE_CUSTOMIZE or INVENTREE_CUSTOM_LOGO +# customize: +# login_message: InvenTree demo instance - Click here for login details +# navbar_message:
InvenTree demo mode
+# logo: logo.png +# hide_admin_link: true +# hide_password_reset: true diff --git a/InvenTree/label/api.py b/InvenTree/label/api.py index 5103d99676..b580853b65 100644 --- a/InvenTree/label/api.py +++ b/InvenTree/label/api.py @@ -4,10 +4,10 @@ from __future__ import unicode_literals from io import BytesIO from PIL import Image -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings -from django.conf.urls import url, include +from django.urls import include, re_path from django.core.exceptions import ValidationError, FieldError from django.http import HttpResponse, JsonResponse @@ -579,38 +579,38 @@ class PartLabelPrint(generics.RetrieveAPIView, PartLabelMixin, LabelPrintMixin): label_api_urls = [ # Stock item labels - url(r'stock/', include([ + re_path(r'stock/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/?', StockItemLabelPrint.as_view(), name='api-stockitem-label-print'), - url(r'^.*$', StockItemLabelDetail.as_view(), name='api-stockitem-label-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/?', StockItemLabelPrint.as_view(), name='api-stockitem-label-print'), + re_path(r'^.*$', StockItemLabelDetail.as_view(), name='api-stockitem-label-detail'), ])), # List view - url(r'^.*$', StockItemLabelList.as_view(), name='api-stockitem-label-list'), + re_path(r'^.*$', StockItemLabelList.as_view(), name='api-stockitem-label-list'), ])), # Stock location labels - url(r'location/', include([ + re_path(r'location/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/?', StockLocationLabelPrint.as_view(), name='api-stocklocation-label-print'), - url(r'^.*$', StockLocationLabelDetail.as_view(), name='api-stocklocation-label-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/?', StockLocationLabelPrint.as_view(), name='api-stocklocation-label-print'), + re_path(r'^.*$', StockLocationLabelDetail.as_view(), name='api-stocklocation-label-detail'), ])), # List view - url(r'^.*$', StockLocationLabelList.as_view(), name='api-stocklocation-label-list'), + re_path(r'^.*$', StockLocationLabelList.as_view(), name='api-stocklocation-label-list'), ])), # Part labels - url(r'^part/', include([ + re_path(r'^part/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'^print/', PartLabelPrint.as_view(), name='api-part-label-print'), - url(r'^.*$', PartLabelDetail.as_view(), name='api-part-label-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^print/', PartLabelPrint.as_view(), name='api-part-label-print'), + re_path(r'^.*$', PartLabelDetail.as_view(), name='api-part-label-detail'), ])), # List view - url(r'^.*$', PartLabelList.as_view(), name='api-part-label-list'), + re_path(r'^.*$', PartLabelList.as_view(), name='api-part-label-list'), ])), ] diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.mo b/InvenTree/locale/cs/LC_MESSAGES/django.mo deleted file mode 100644 index 067827f3ed..0000000000 Binary files a/InvenTree/locale/cs/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index d159e9859c..939734dd2c 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -1,439 +1,450 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#: templates/js/translated/order.js:2170 -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-20 14:16+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\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 == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" -msgstr "" +msgstr "API endpoint nebyl nalezen" #: InvenTree/api.py:103 msgid "No action specified" -msgstr "" +msgstr "Činnost nebyla specifikována" #: InvenTree/api.py:118 msgid "No matching action found" -msgstr "" +msgstr "Nebyla nalezena odpovídající činnost" #: InvenTree/fields.py:100 msgid "Enter date" -msgstr "" +msgstr "Zadejte datum" #: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 #: order/forms.py:57 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:601 msgid "Confirm" -msgstr "" +msgstr "Potvrdit" #: InvenTree/forms.py:142 msgid "Confirm delete" -msgstr "" +msgstr "Potvrdit odstranění" #: InvenTree/forms.py:143 msgid "Confirm item deletion" -msgstr "" +msgstr "Potvrdit odstranění položky" #: InvenTree/forms.py:174 msgid "Enter password" -msgstr "" +msgstr "Zadejte heslo" #: InvenTree/forms.py:175 msgid "Enter new password" -msgstr "" +msgstr "Zadejte nové heslo" #: InvenTree/forms.py:182 msgid "Confirm password" -msgstr "" +msgstr "Potvrďte heslo" #: InvenTree/forms.py:183 msgid "Confirm new password" -msgstr "" +msgstr "Potvrďte nové heslo" #: InvenTree/forms.py:215 msgid "Select Category" -msgstr "" +msgstr "Vyberte kategorii" #: InvenTree/forms.py:236 msgid "Email (again)" -msgstr "" +msgstr "Email (znovu)" #: InvenTree/forms.py:240 msgid "Email address confirmation" -msgstr "" +msgstr "Potvrzení emailové adresy" #: InvenTree/forms.py:260 msgid "You must type the same email each time." -msgstr "" +msgstr "Pokaždé musíte zadat stejný email." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" -msgstr "" +msgstr "Duplicitní výrobní číslo: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 #: stock/views.py:993 msgid "Invalid quantity provided" -msgstr "" +msgstr "Vyplněno neplatné množství" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" +msgstr "Nevyplněné výrobní číslo" + +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" +msgstr "Neplatná skupina: {g}" + +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" -msgstr "" +msgstr "Neplatná/nevyplněná skupina {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" -msgstr "" +msgstr "Nenalezena žádná výrobní čísla" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" -msgstr "" +msgstr "Počet unikátních výrobních čísel ({s}) musí odpovídat množství ({q})" #: InvenTree/models.py:185 msgid "Missing file" -msgstr "" +msgstr "Chybějící soubor" #: InvenTree/models.py:186 msgid "Missing external link" -msgstr "" +msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:197 stock/models.py:2171 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" -msgstr "" +msgstr "Příloha" #: InvenTree/models.py:198 msgid "Select file to attach" -msgstr "" +msgstr "Vyberte soubor k přiložení" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1423 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "" +msgstr "Odkaz" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:639 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" -msgstr "" +msgstr "Odkaz na externí URL" #: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" -msgstr "" +msgstr "Komentář" #: InvenTree/models.py:208 msgid "File comment" -msgstr "" +msgstr "Komentář k souboru" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2369 -#: part/models.py:2389 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2517 msgid "User" -msgstr "" +msgstr "Uživatel" #: InvenTree/models.py:218 msgid "upload date" -msgstr "" +msgstr "datum přidání" #: InvenTree/models.py:241 msgid "Filename must not be empty" -msgstr "" +msgstr "Název souboru nesmí být prázdný" #: InvenTree/models.py:264 msgid "Invalid attachment directory" -msgstr "" +msgstr "Neplatný adresář přílohy" #: InvenTree/models.py:274 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "" +msgstr "Název souboru obsahuje nepovolený znak '{c}'" #: InvenTree/models.py:277 msgid "Filename missing extension" -msgstr "" +msgstr "Chybějící přípona souboru" #: InvenTree/models.py:284 msgid "Attachment with this filename already exists" -msgstr "" +msgstr "Příloha s tímto názvem již existuje" #: InvenTree/models.py:291 msgid "Error renaming file" -msgstr "" +msgstr "Chyba při přejmenování souboru" #: InvenTree/models.py:326 msgid "Invalid choice" -msgstr "" +msgstr "Neplatný výběr" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2553 plugin/models.py:40 report/models.py:177 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:610 -#: templates/js/translated/part.js:749 templates/js/translated/part.js:1730 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 #: templates/js/translated/stock.js:2287 msgid "Name" -msgstr "" +msgstr "Název" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 #: part/templates/part/set_category.html:14 report/models.py:190 -#: report/models.py:553 report/models.py:592 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:669 templates/js/translated/part.js:1064 -#: templates/js/translated/part.js:1337 templates/js/translated/part.js:1749 -#: templates/js/translated/part.js:1818 templates/js/translated/stock.js:1685 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 #: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" -msgstr "" +msgstr "Popis" #: InvenTree/models.py:350 msgid "Description (optional)" -msgstr "" +msgstr "Popis (volitelně)" #: InvenTree/models.py:358 msgid "parent" -msgstr "" +msgstr "nadřazený" -#: InvenTree/serializers.py:65 part/models.py:2872 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" -msgstr "" +msgstr "Musí být platné číslo" #: InvenTree/serializers.py:299 msgid "Filename" -msgstr "" +msgstr "Název souboru" #: InvenTree/serializers.py:334 msgid "Invalid value" -msgstr "" +msgstr "Neplatná hodnota" #: InvenTree/serializers.py:355 msgid "Data File" -msgstr "" +msgstr "Datový soubor" #: InvenTree/serializers.py:356 msgid "Select data file for upload" -msgstr "" +msgstr "Vyberte datový soubor k nahrání" #: InvenTree/serializers.py:380 msgid "Unsupported file type" -msgstr "" +msgstr "Nepodporovaný typ souboru" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "" +msgstr "Soubor je příliš velký" #: InvenTree/serializers.py:407 msgid "No columns found in file" -msgstr "" +msgstr "V souboru nebyly nalezeny žádné sloupce" #: InvenTree/serializers.py:410 msgid "No data rows found in file" -msgstr "" +msgstr "V souboru nebyly nalezeny žádné řádky s daty" #: InvenTree/serializers.py:533 msgid "No data rows provided" -msgstr "" +msgstr "Nebyly zadány žádné řádky s daty" #: InvenTree/serializers.py:536 msgid "No data columns supplied" -msgstr "" +msgstr "Nebyly zadány žádné sloupce s daty" #: InvenTree/serializers.py:623 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "Chybí povinný sloupec: '{name}'" #: InvenTree/serializers.py:632 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Spanish (Mexican)" -msgstr "" +msgstr "Duplicitní sloupec: '{col}'" #: InvenTree/settings.py:672 -msgid "Farsi / Persian" -msgstr "" +msgid "Czech" +msgstr "Čeština" #: InvenTree/settings.py:673 -msgid "French" -msgstr "" +msgid "German" +msgstr "Němčina" #: InvenTree/settings.py:674 -msgid "Hebrew" -msgstr "" +msgid "Greek" +msgstr "Řečtina" #: InvenTree/settings.py:675 -msgid "Hungarian" -msgstr "" +msgid "English" +msgstr "Angličtina" #: InvenTree/settings.py:676 -msgid "Italian" -msgstr "" +msgid "Spanish" +msgstr "Španělština" #: InvenTree/settings.py:677 -msgid "Japanese" -msgstr "" +msgid "Spanish (Mexican)" +msgstr "Španělština (Mexiko)" #: InvenTree/settings.py:678 -msgid "Korean" -msgstr "" +msgid "Farsi / Persian" +msgstr "Farsi / Perština" #: InvenTree/settings.py:679 -msgid "Dutch" -msgstr "" +msgid "French" +msgstr "Francouzština" #: InvenTree/settings.py:680 -msgid "Norwegian" -msgstr "" +msgid "Hebrew" +msgstr "Hebrejština" #: InvenTree/settings.py:681 -msgid "Polish" -msgstr "" +msgid "Hungarian" +msgstr "Maďarština" #: InvenTree/settings.py:682 -msgid "Portugese" -msgstr "" +msgid "Italian" +msgstr "Italština" #: InvenTree/settings.py:683 -msgid "Russian" -msgstr "" +msgid "Japanese" +msgstr "Japonština" #: InvenTree/settings.py:684 -msgid "Swedish" -msgstr "" +msgid "Korean" +msgstr "Korejština" #: InvenTree/settings.py:685 -msgid "Thai" -msgstr "" +msgid "Dutch" +msgstr "Nizozemština" #: InvenTree/settings.py:686 -msgid "Turkish" -msgstr "" +msgid "Norwegian" +msgstr "Norština" #: InvenTree/settings.py:687 -msgid "Vietnamese" -msgstr "" +msgid "Polish" +msgstr "Polština" #: InvenTree/settings.py:688 -msgid "Chinese" +msgid "Portuguese" msgstr "" +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "Ruština" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "Švédština" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "Thajština" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "Turečtina" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "Vietnamština" + +#: InvenTree/settings.py:695 +msgid "Chinese" +msgstr "Čínština" + #: InvenTree/status.py:110 msgid "Background worker check failed" -msgstr "" +msgstr "Kontrola procesů na pozadí se nezdařila" #: InvenTree/status.py:114 msgid "Email backend not configured" -msgstr "" +msgstr "Email backend není nakonfigurován" #: InvenTree/status.py:117 msgid "InvenTree system health checks failed" -msgstr "" +msgstr "Kontroly zdraví systému InvenTree selhaly" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 #: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" -msgstr "" +msgstr "Nevyřízeno" #: InvenTree/status_codes.py:102 msgid "Placed" -msgstr "" +msgstr "Umístěno" #: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" -msgstr "" +msgstr "Hotovo" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 #: InvenTree/status_codes.py:325 msgid "Cancelled" -msgstr "" +msgstr "Zrušeno" #: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145 #: InvenTree/status_codes.py:187 msgid "Lost" -msgstr "" +msgstr "Ztraceno" #: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146 #: InvenTree/status_codes.py:189 msgid "Returned" -msgstr "" +msgstr "Vráceno" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" -msgstr "" +msgstr "Odesláno" #: InvenTree/status_codes.py:183 msgid "OK" @@ -441,51 +452,51 @@ msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" -msgstr "" +msgstr "Vyžaduje pozornost" #: InvenTree/status_codes.py:185 msgid "Damaged" -msgstr "" +msgstr "Poškozeno" #: InvenTree/status_codes.py:186 msgid "Destroyed" -msgstr "" +msgstr "Zničeno" #: InvenTree/status_codes.py:188 msgid "Rejected" -msgstr "" +msgstr "Odmítnuto" #: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" -msgstr "" +msgstr "Původní položka sledování zásob" #: InvenTree/status_codes.py:278 msgid "Stock item created" -msgstr "" +msgstr "Položka zásob vytvořena" #: InvenTree/status_codes.py:280 msgid "Edited stock item" -msgstr "" +msgstr "Položka zásob upravena" #: InvenTree/status_codes.py:281 msgid "Assigned serial number" -msgstr "" +msgstr "Přiřazeno výrobní číslo" #: InvenTree/status_codes.py:283 msgid "Stock counted" -msgstr "" +msgstr "Stav zásob sečten" #: InvenTree/status_codes.py:284 msgid "Stock manually added" -msgstr "" +msgstr "Zásoba přidána ručně" #: InvenTree/status_codes.py:285 msgid "Stock manually removed" -msgstr "" +msgstr "Zásoba odebrána ručně" #: InvenTree/status_codes.py:287 msgid "Location changed" -msgstr "" +msgstr "Umístění změněno" #: InvenTree/status_codes.py:289 msgid "Installed into assembly" @@ -583,29 +594,29 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" -msgstr "" +msgstr "Zaškrtněte políčko pro potvrzení odstranění položky" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" -msgstr "" +msgstr "Upravit informace o uživateli" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" -msgstr "" +msgstr "Nastavit heslo" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" -msgstr "" +msgstr "Hesla se musí shodovat" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" -msgstr "" +msgstr "Informace o systému" #: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" @@ -613,11 +624,11 @@ msgstr "" #: barcodes/api.py:132 msgid "No match found for barcode data" -msgstr "" +msgstr "Pro data čárového kódu nebyla nalezena shoda" #: barcodes/api.py:134 msgid "Match found for barcode data" -msgstr "" +msgstr "Pro data čárového kódu byla nalezena shoda" #: barcodes/api.py:159 msgid "Must provide stockitem parameter" @@ -662,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -680,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2783 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -705,12 +717,12 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2315 part/models.py:2331 part/models.py:2350 -#: part/models.py:2367 part/models.py:2469 part/models.py:2591 -#: part/models.py:2681 part/models.py:2758 part/models.py:3048 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -720,15 +732,15 @@ msgstr "" #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1049 -#: templates/js/translated/part.js:1119 templates/js/translated/part.js:1315 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 #: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 #: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 #: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 @@ -748,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -789,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:643 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:331 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -811,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -820,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -829,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -842,28 +854,29 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:372 stock/models.py:637 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:709 -#: stock/models.py:2071 stock/models.py:2177 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 #: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -884,69 +897,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 #: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 #: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2774 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -958,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 #: templates/js/translated/model_renderers.js:108 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:949 -#: templates/js/translated/part.js:1961 templates/js/translated/part.js:2183 -#: templates/js/translated/part.js:2217 templates/js/translated/part.js:2295 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 #: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 #: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 #: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -1004,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:477 stock/models.py:1280 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 #: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:591 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 #: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 #: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 #: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1767 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 #: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2898 -#: part/models.py:3040 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1246,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:953 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1274,19 +1300,19 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 #: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1325,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1334,12 +1360,13 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 +#: templates/js/translated/build.js:1139 #: templates/js/translated/model_renderers.js:112 #: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 #: templates/js/translated/stock.js:2610 @@ -1351,7 +1378,7 @@ msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1371,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1464,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:122 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1571,832 +1606,848 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2593 report/models.py:183 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 +#: common/models.py:820 part/models.py:970 #: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 +#: common/models.py:834 part/models.py:986 #: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:980 templates/js/translated/part.js:1966 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:308 @@ -2404,79 +2455,79 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" #: common/views.py:93 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:243 part/views.py:208 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:209 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2563,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2592,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2600,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:581 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2610,7 +2662,7 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 @@ -2624,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:938 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2645,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2657,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2164 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:758 templates/js/translated/stock.js:1303 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2666,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2561 -#: part/templates/part/part_base.html:306 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:764 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2682,13 +2734,13 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:906 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 #: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2698,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:924 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2720,22 +2772,22 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2786 part/templates/part/upload_bom.html:59 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1871 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1871 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:605 stock/templates/stock/item_base.html:322 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2744,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1873 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2771,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2807,11 +2859,11 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:624 -#: stock/models.py:625 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 #: templates/js/translated/stock.js:2435 #: templates/js/translated/table_filters.js:419 msgid "Customer" @@ -2826,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:491 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2842,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2880,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2894,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2917,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2936,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2945,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2960,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:19 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3057,7 +3109,7 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:589 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" @@ -3100,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3114,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3135,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:673 -#: templates/js/translated/part.js:1208 templates/js/translated/part.js:1369 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 #: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 -#: templates/navbar.html:28 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3157,7 +3211,7 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" @@ -3169,8 +3223,7 @@ msgstr "" #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2311 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3183,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3199,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3273,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:318 report/models.py:455 report/models.py:493 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3298,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:881 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 #: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:975 templates/js/translated/part.js:1002 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 #: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:718 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 #: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:304 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3738,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3788,9 +3864,9 @@ msgstr "" #: 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_references.html:49 -#: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 #: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -3847,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3882,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3892,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3915,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3924,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3951,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4032,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:356 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4090,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:512 templates/js/translated/part.js:532 -#: templates/js/translated/part.js:1211 templates/js/translated/part.js:1383 -#: templates/js/translated/part.js:1399 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4124,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2637 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4141,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1762 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4168,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2690 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:320 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2387 part/models.py:2636 -#: part/templates/part/part_base.html:283 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1351 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:292 -#: templates/js/translated/part.js:661 templates/js/translated/part.js:1304 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 #: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:299 -#: report/models.py:196 templates/js/translated/part.js:665 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:365 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1873 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2437 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2454 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1813 +#: part/models.py:2479 templates/js/translated/part.js:1831 #: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2475 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2480 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2481 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2486 templates/js/translated/part.js:1822 +#: part/models.py:2491 templates/js/translated/part.js:1840 #: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2487 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2492 templates/js/translated/part.js:1830 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2493 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2498 templates/js/translated/part.js:1837 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2499 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2510 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2546 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2554 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2561 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2591 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2593 part/models.py:2642 part/models.py:2643 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2595 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2595 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2647 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2648 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2682 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2685 templates/js/translated/model_renderers.js:203 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2686 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2689 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2693 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2694 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2697 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2698 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2759 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2767 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2768 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2774 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2776 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2776 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2779 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2780 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2783 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2786 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2788 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2788 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2792 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2793 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2798 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2799 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2884 stock/models.py:467 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2893 part/models.py:2895 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3007 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3029 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3041 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3049 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3060 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3064 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3064 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3096 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4659,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4844,134 +4938,134 @@ msgstr "" msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -5116,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:195 -#: templates/js/translated/part.js:576 templates/js/translated/part.js:653 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:599 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5131,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:258 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:264 templates/js/translated/part.js:515 -#: templates/js/translated/part.js:535 templates/js/translated/part.js:1215 -#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1403 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:313 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:342 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:346 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:469 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:593 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5276,8 +5352,7 @@ msgstr "" #: part/templates/part/partial_delete.html:9 #, python-format -msgid "" -"Part '%(full_name)s' cannot be deleted as it is still marked as active.\n" +msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n" "
Disable the \"Active\" part attribute and re-try.\n" " " msgstr "" @@ -5312,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5382,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:538 -#: templates/js/translated/part.js:1203 templates/js/translated/part.js:1407 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5437,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:317 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5703,31 +5771,31 @@ msgstr "" msgid "Purchase order query filters" msgstr "" -#: report/models.py:494 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5740,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:629 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 #: templates/js/translated/model_renderers.js:106 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:434 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5754,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2152 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2158 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2344 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5789,19 +5857,19 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:543 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:550 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:575 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:686 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1821 msgid "Expiry Date" @@ -5843,232 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:723 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:724 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:484 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:494 stock/models.py:503 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:495 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:517 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:523 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:530 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:573 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:582 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:590 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:596 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:599 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:606 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:612 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:615 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:631 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:645 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:649 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:658 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:660 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:671 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:674 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:680 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:687 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:700 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:700 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:710 stock/templates/stock/item.html:137 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:719 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:751 +#: stock/models.py:782 msgid "Converted to part" msgstr "" -#: stock/models.py:1271 +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1283 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1286 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1289 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1296 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1367 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1370 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1373 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1376 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1379 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1382 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1389 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1397 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1401 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2072 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2129 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2135 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2153 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2159 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2165 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2172 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2178 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6076,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6227,8 +6291,8 @@ msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6384,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6482,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6652,39 +6715,40 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6716,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6866,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6904,7 +6972,7 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" #: templates/InvenTree/settings/plugin.html:34 @@ -6916,7 +6984,7 @@ msgstr "" msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" @@ -6981,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7124,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7337,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7437,38 +7505,28 @@ msgid "This email confirmation link expired or is invalid. Please sign up\n" "for a account and sign in below:" msgstr "" #: templates/account/login.html:25 #, python-format -msgid "" -"If you have not created an account yet, then please\n" +msgid "If you have not created an account yet, then please\n" "sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7639,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:525 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7657,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7777,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:998 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7888,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7969,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8115,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1296 -#: templates/js/translated/part.js:1723 templates/js/translated/stock.js:1628 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 #: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2523 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8301,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8346,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:564 -#: templates/js/translated/part.js:649 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:781 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:782 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:799 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:811 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8481,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8606,36 +8689,36 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:123 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:149 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:166 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:265 -#: templates/js/translated/model_renderers.js:291 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:326 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:369 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:398 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" @@ -8655,245 +8738,283 @@ msgstr "" msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2084 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:852 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1940 templates/js/translated/part.js:2284 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:961 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1007 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 #: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -9018,133 +9139,133 @@ msgstr "" msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:508 templates/js/translated/part.js:1379 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 #: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:518 templates/js/translated/part.js:1391 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:556 templates/js/translated/part.js:641 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:572 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:687 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1077 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1101 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1166 templates/js/translated/part.js:1462 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1205 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1356 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1486 templates/js/translated/part.js:1658 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 #: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1502 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1677 templates/js/translated/stock.js:2261 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1741 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1755 templates/js/translated/stock.js:2305 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1799 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1850 templates/js/translated/stock.js:1242 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1851 templates/js/translated/stock.js:1243 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 #: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1857 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1879 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1893 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1918 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1973 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1974 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2079 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2112 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2138 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2208 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2227 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9346,7 +9467,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:886 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" @@ -9827,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9857,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10081,34 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" + diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo deleted file mode 100644 index de1e091409..0000000000 Binary files a/InvenTree/locale/de/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 4c98d9b872..b4b708833e 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Bestätigung der E-Mail Adresse" msgid "You must type the same email each time." msgstr "E-Mail Adressen müssen übereinstimmen." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Doppelte Seriennummer: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ungültige Gruppe: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Ungültige/Keine Gruppe {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen" @@ -122,7 +130,7 @@ msgstr "Fehlende Datei" msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Anhang" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "Link" +msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Link zu einer externen URL" @@ -152,12 +160,12 @@ msgstr "Kommentar" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Benutzer" @@ -194,42 +202,42 @@ msgstr "Fehler beim Umbenennen" msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" -msgstr "Name" +msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Beschreibung" @@ -241,7 +249,7 @@ msgstr "Beschreibung (optional)" msgid "parent" msgstr "Eltern" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" @@ -295,87 +303,99 @@ msgstr "Erforderliche Spalte '{name}' fehlt" msgid "Duplicate column: '{col}'" msgstr "Doppelte Spalte: '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Griechisch" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Spanisch" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Spanisch (Mexikanisch)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "Persisch" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Hebräisch" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Ungarisch" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Italienisch" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japanisch" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreanisch" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Niederländisch" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norwegisch" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polnisch" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugiesisch" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Schwedisch" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Thailändisch" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Türkisch" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Chinesisch" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InvenTree Status-Überprüfung fehlgeschlagen" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Ausstehend" @@ -400,14 +420,14 @@ msgstr "Ausstehend" msgid "Placed" msgstr "Platziert" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Fertig" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Storniert" @@ -421,14 +441,14 @@ msgstr "Verloren" msgid "Returned" msgstr "Zurückgegeben" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Versendet" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Zerstört" msgid "Rejected" msgstr "Zurückgewiesen" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Alter Bestand-Verfolgungs-Eintrag" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Lagerartikel erstellt" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Lagerartikel bearbeitet" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Seriennummer hinzugefügt" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Bestand gezählt" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Bestand manuell hinzugefügt" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Bestand manuell entfernt" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Standort geändert" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "In Baugruppe installiert" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Aus Baugruppe entfernt" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Komponente installiert" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Komponente entfernt" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Vom übergeordneten Element geteilt" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Unterobjekt geteilt" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Lagerartikel zusammengeführt" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "In Variante umgewandelt" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Zum Kunden geschickt" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Rücksendung vom Kunden" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Endprodukt erstellt" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Endprodukt fertiggestellt" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "Durch Bauauftrag verbraucht" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Gegen Bestellung empfangen" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "in Arbeit" @@ -570,27 +594,27 @@ msgstr "Überschuss darf 100% nicht überschreiten" msgid "Invalid value for overage" msgstr "Ungültiger Wert für Ausschuss" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Element löschen" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Häkchen setzen um Löschung von Objekt zu bestätigen" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Benutzerinformationen bearbeiten" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Passwort eingeben" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Passwörter stimmen nicht überein" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Systeminformationen" @@ -649,15 +673,15 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Bauauftrag" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Bauaufträge" msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Referenz" @@ -692,33 +717,34 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Teil" @@ -734,8 +760,8 @@ msgstr "Auftrag Referenz" msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Quell-Lagerort" @@ -775,21 +801,21 @@ msgstr "Bauauftrags-Status" msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" @@ -797,8 +823,8 @@ msgstr "geplantes Fertigstellungsdatum" msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Fertigstellungsdatum" @@ -806,7 +832,7 @@ msgstr "Fertigstellungsdatum" msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Aufgegeben von" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Verantwortlicher Benutzer" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Nutzer der für diesen Bauauftrag zuständig ist" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Externer Link" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Notizen" @@ -870,73 +897,73 @@ msgstr "Endprodukt bereits hergstellt" msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:1168 +#: build/models.py:1171 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:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Bauauftrag" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Bauauftrag starten um Teile zuzuweisen" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Quell-Lagerartikel" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "Endprodukt" @@ -990,178 +1018,190 @@ msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags" msgid "This build output has already been completed" msgstr "Dieses Endprodukt wurde bereits fertiggestellt" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: build/serializers.py:211 +#: build/serializers.py:216 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:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Seriennummer" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Endprodukt eingeben" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "Seriennummern automatisch zuweisen" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "Folgende Seriennummern existieren bereits" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Lagerort" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "Lagerort für fertige Endprodukte" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" -msgstr "Status" +msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "Nicht zugewiesene akzeptieren" -#: build/serializers.py:435 +#: build/serializers.py:448 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:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" -#: build/serializers.py:451 +#: build/serializers.py:464 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:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "Bauauftrag hat unvollständige Aufbauten" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "Stücklisten-Position" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:567 +#: build/serializers.py:580 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:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:644 +#: build/serializers.py:658 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:651 +#: build/serializers.py:665 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:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" -#: build/serializers.py:731 +#: build/serializers.py:749 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:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "Lagerort ausschließen" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "Lagerartikel vom ausgewählten Ort ausschließen" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "Wechselbares Lagerbestand" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "" +msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" -msgstr "Lagerartikel auswechseln" +msgstr "Ersatzbestand" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "Zuordnung von Ersatzteilen erlauben" @@ -1232,13 +1272,13 @@ 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:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Zieldatum" @@ -1251,28 +1291,28 @@ msgstr "Bauauftrag war fällig am %(target)s" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "Überfällig" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Fertig" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Auftrag" @@ -1311,8 +1351,8 @@ msgstr "Ausgangs-Lager" msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Ziel-Lager" @@ -1320,22 +1360,25 @@ msgstr "Ziel-Lager" msgid "Destination location not specified" msgstr "Ziel-Lagerort nicht angegeben" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "Zugewiesene Teile" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "Losnummer" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Erstellt" @@ -1355,7 +1398,7 @@ msgstr "Unter-Bauaufträge" msgid "Allocate Stock to Build" msgstr "Bestand Bauauftrag zuweisen" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Bestandszuordnung aufheben" @@ -1448,33 +1491,41 @@ msgstr "Druck Aktionen" msgid "Print labels" msgstr "Label drucken" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "Fertiggestellte Endprodukte" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Anhänge" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Neuer Bauauftrag" @@ -1555,914 +1606,928 @@ msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:680 +#: common/models.py:698 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:687 -msgid "InvenTree Instance Name" -msgstr "InvenTree Instanzname" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Firmenname" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Standardwährung" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Barcode-Scanner Unterstützung" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" -msgstr "IPN Regex" +msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:761 +#: common/models.py:786 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:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:768 +#: common/models.py:793 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:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Vorlage" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Komponente" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Preis in Formularen anzeigen" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "Teilpreis in einigen Formularen anzeigen" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Preis in Stückliste anzeigen" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "Preisverlauf anzeigen" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "Historische Preise für Teil anzeigen" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "Ausgangsbestand erstellen" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "Interner Preis als Stückliste-Preis" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Test-Berichte" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:951 +#: common/models.py:982 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:953 +#: common/models.py:984 msgid "days" msgstr "Tage" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "Bauauftrag-Referenz Präfix" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "Präfix für Bauauftrag-Referenz" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "Bauauftrag-Referenz RegEx" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "Auftrags-Referenz Präfix" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "Präfix für Auftrags-Referenz" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "Bestellungs-Referenz Präfix" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "Präfix für Bestellungs-Referenz" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Anmeldung erlauben" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1027 +#: common/models.py:1063 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:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "Aktuelle Teile-Stände" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "Anzahl der neusten Teile auf der Startseite" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "aktueller Bestand" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "Anzahl des geänderten Bestands auf der Startseite" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "E-Mail-Benachrichtigungen aktivieren" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "Das Senden von Benachrichtigungen als E-Mails erlauben" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:1259 +#: common/models.py:1319 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:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:1266 +#: common/models.py:1326 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:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" -msgstr "" +msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" -msgstr "" +msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" -msgstr "" +msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" -msgstr "" +msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" -msgstr "" +msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" -msgstr "" +msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:1322 +#: common/models.py:1382 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:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" -msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Preis" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Aktiv" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" -msgstr "Token" +msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" -msgstr "Secret" +msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" -msgstr "Host" +msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" -msgstr "Header" +msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" -msgstr "Body" +msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Datei hochgeladen" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Übereinstimmende Felder" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Teile importiert" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Vorheriger Schritt" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2509,7 +2571,7 @@ msgstr "Firmenbeschreibung" #: templates/InvenTree/settings/plugin_settings.html:55 #: templates/js/translated/company.js:349 msgid "Website" -msgstr "Website" +msgstr "" #: company/models.py:113 msgid "Company website URL" @@ -2534,7 +2596,7 @@ msgstr "Kontakt-Telefon" #: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:48 msgid "Email" -msgstr "Email" +msgstr "" #: company/models.py:125 msgid "Contact email address" @@ -2552,7 +2614,7 @@ msgstr "Anlaufstelle" msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Bild" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Währung" @@ -2589,7 +2652,7 @@ msgstr "Währung" msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Basisteil" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Teil auswählen" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Hersteller" @@ -2613,13 +2676,13 @@ msgstr "Hersteller" msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Herstellerteil" @@ -2646,8 +2709,8 @@ msgstr "Parametername" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Wert" @@ -2655,10 +2718,10 @@ msgstr "Wert" msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "Einheiten" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Zulieferer" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "Zulieferer auswählen" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "SKU (Lagerbestandseinheit)" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Notiz" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Verpackungen" @@ -2733,7 +2796,7 @@ msgstr "Verpackungen" msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "Vielfache" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "Firma" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Bestellung anlegen" @@ -2796,13 +2859,13 @@ msgstr "Neues Bild hochladen" msgid "Download image from URL" msgstr "Bild von URL herunterladen" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Kunde" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Telefon" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Bild hochladen" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Neues Zuliefererteil" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Optionen" @@ -2869,7 +2932,7 @@ msgstr "Herstellerteile" msgid "Create new manufacturer part" msgstr "Neues Herstellerteil anlegen" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Neues Herstellerteil" @@ -2883,10 +2946,10 @@ msgstr "Zulieferer-Bestand" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Bestellungen" @@ -2906,10 +2969,10 @@ msgstr "Neue Bestellung" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Aufträge" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Neuer Auftrag" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "Zugeordneter Bestand" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "Firmenbemerkungen" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Zuliefererteil entfernen?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Alle ausgewählten Zulieferteile werden gelöscht" @@ -2949,83 +3012,83 @@ msgstr "Alle ausgewählten Zulieferteile werden gelöscht" msgid "Supplier List" msgstr "Zulieferer-Liste" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Hersteller" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Teil bestellen" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "Herstellerteil bearbeiten" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "Herstellerteil löschen" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Internes Teil" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Zulieferer" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Zuliefererteil entfernen" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Löschen" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parameter" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Neuer Parameter" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "Parameter löschen" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "Parameter hinzufügen" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "Ausgewählte Parameter werden gelöscht" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "Parameter löschen" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "Zugewiesene Lagerartikel" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -3074,7 +3137,7 @@ msgstr "Neuen Lagerartikel hinzufügen" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "Neuer Lagerartikel" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "Teil bestellen" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Preisinformationen ansehen" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "Preisstaffel hinzufügen" @@ -3103,11 +3166,13 @@ msgstr "Preisstaffel hinzufügen" msgid "No price break information found" msgstr "Keine Informationen zur Preisstaffel gefunden" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "Preisstaffel löschen" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "Preisstaffel bearbeiten" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "Zuletzt aktualisiert" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Bestand" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "Zuliefererteil Bepreisung" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Bepreisung" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Lagerartikel" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Neuer Hersteller" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Kunden" @@ -3186,20 +3252,20 @@ msgstr "Firmen" msgid "New Company" msgstr "Neue Firma" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Bild herunterladen" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "Ungültige Antwort {code}" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" @@ -3217,13 +3283,13 @@ msgstr "Label Beschreibung" #: label/models.py:127 msgid "Label" -msgstr "Label" +msgstr "" #: label/models.py:128 msgid "Label template file" msgstr "Label-Vorlage-Datei" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Aktiviert" @@ -3247,7 +3313,7 @@ msgstr "Höhe [mm]" msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "Dateinamen-Muster" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filter" @@ -3285,374 +3351,392 @@ msgstr "Bestellung als vollständig markieren" msgid "Cancel order" msgstr "Bestellung stornieren" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Bestellungs-Beschreibung" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Erstellt von" -#: order/models.py:142 +#: order/models.py:147 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:147 +#: order/models.py:152 msgid "Order notes" msgstr "Bestell-Notizen" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "Bestellungs-Status" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "Zulieferer Bestellreferenz" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "Empfangen von" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "Ziel-Versanddatum" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Geplantes Lieferdatum für Auftrag." -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "Zieldatum für Auftrags-Fertigstellung." -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "Versand von" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "Nur ein ausstehender Auftrag kann als abgeschlossen markiert werden" -#: order/models.py:669 +#: order/models.py:693 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:672 +#: order/models.py:696 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:837 +#: order/models.py:861 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "Lieferdatum für diese Position" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "Bestellung" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Bestellung" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "Empfangen" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:937 +#: order/models.py:991 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:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "Verkaufspreis" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "Versendete Menge" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "Versanddatum" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "Kontrolliert von" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "Sendungsnummer" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "Versandhinweise" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "Sendungsverfolgungsnummer" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "Informationen zur Sendungsverfolgung" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "Sendung wurde bereits versandt" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "Sendung hat keine zugewiesene Lagerartikel" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "Lagerartikel wurde nicht zugewiesen" -#: order/models.py:1213 +#: order/models.py:1297 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:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "Zu viele Lagerartikel zugewiesen" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "Auftrag gehört nicht zu Sendung" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "Sendung gehört nicht zu Auftrag" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "Position" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "Sendung" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "Sendungsnummer-Referenz" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "Position" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "Lagerartikel für Zuordnung auswählen" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "Position" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "Einzigartiger Identifikator" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" @@ -3725,7 +3809,12 @@ msgstr "Unvollständig" msgid "Issued" msgstr "Aufgegeben" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "Bestellung bearbeiten" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "Fehler in den übermittelten Daten" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Zulieferer-Teil auswählen" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Zeile entfernen" @@ -3789,19 +3876,11 @@ msgstr "Zeile entfernen" msgid "Return to Orders" msgstr "Zurück zu Bestellungen" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "Datei zur Bestellung hochladen" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "Schritt %(step)s von %(count)s" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "Bestellung ist bereits verarbeitet. Dateien können nicht hochgeladen werden." @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "Bestellungen auswählen oder anlegen." #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "Positionen" @@ -3865,7 +3944,7 @@ msgstr "Bestellung für %(name)s auswählen" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "Positionen" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "Bestellungs-Positionen" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -3889,15 +3968,30 @@ msgstr "Position hinzufügen" msgid "Receive selected items" msgstr "Ausgewählte Positionen erhalten" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "Empfangene Teile" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "Notizen zur Bestellung" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "Paketliste drucken" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "Auftrag abschließen" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "Dieser Auftrag ist nicht vollständig zugeordnet" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "Kundenreferenz" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Abgeschlossene Sendungen" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "Auftrag bearbeiten" @@ -3948,17 +4042,17 @@ msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar i msgid "Sales Order Items" msgstr "Auftrags-Positionen" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "Ausstehende Sendungen" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "Aktionen" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "Neue Sendung" @@ -4029,52 +4123,52 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" -msgstr "" +msgstr "Eingehende Bestellung" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "Gültig" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "Muss größer als 0 sein" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "Muss eine gültige Nummer sein" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "Standort für anfänglichen Bestand angeben" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "Dieses Feld ist erforderlich" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Standard-Lagerort" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "Verfügbarer Bestand" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "Bestellt" @@ -4121,14 +4215,14 @@ msgstr "Standard Stichwörter" msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Teil-Kategorien" @@ -4138,9 +4232,8 @@ msgstr "Teil-Kategorien" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Teile" @@ -4165,466 +4258,470 @@ msgstr "Nächste verfügbare Seriennummer ist" msgid "Most recent serial number is" msgstr "Die neuste Seriennummer ist" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Variante von" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Schlüsselwörter" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Kategorie" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" -msgstr "Revision" +msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Minimaler Bestand" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2413 +#: part/models.py:2442 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:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "Benötigt" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:2469 +#: part/models.py:2498 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:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:2475 +#: part/models.py:2504 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:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "Ungültiges Zeichen im Vorlagename ({c})" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "Einheit des Parameters" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "Wert" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Teil-ID" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "Name des Teils" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "Teil-ID" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "Stufe" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" -msgstr "Optional" +msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Geerbt" -#: part/models.py:2769 +#: part/models.py:2812 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:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:2775 +#: part/models.py:2818 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:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "Kaufwährung dieses Lagerartikels" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "Bauteil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "Keine Bauteilspalte angegeben" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" @@ -4635,7 +4732,7 @@ msgstr "Benachrichtigungen über geringen Bestand" #: part/tasks.py:19 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" +msgstr "Der verfügbare Bestand für {part.name} ist unter das konfigurierte Mindestniveau gefallen" #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." @@ -4656,7 +4753,7 @@ msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am msgid "The BOM for %(part)s has not been validated." msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "Stücklisten-Aktionen" @@ -4708,7 +4805,7 @@ msgstr "Pfad zur Kategorie" msgid "Top level part category" msgstr "Oberste Teil-Kategorie" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Unter-Kategorien" @@ -4745,23 +4842,23 @@ msgstr "Exportieren" msgid "Export Data" msgstr "Exportieren" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "Teilparameter" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "Teil-Kategorie hinzufügen" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "Teil hinzufügen" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "Ein weiteres Teil anlegen" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "Teil erfolgreich angelegt" @@ -4801,7 +4898,7 @@ msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die übergeordnete msgid "Import Parts" msgstr "Teile importieren" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "Teil duplizieren" @@ -4837,174 +4934,175 @@ msgstr "Teil Test-Vorlagen" msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "Verkaufsauftragszuweisungen" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" -msgstr "" +msgstr "Teile-Notizen" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "Teil Varianten" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "Neue Variante anlegen" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "neue Variante anlegen" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "Parameter hinzufügen" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "Verknüpfte Teile" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Stückliste" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "Export-Aktionen" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Stückliste exportieren" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "Stücklisten-Bericht drucken" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "Stückliste hochladen" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "Stückliste überprüfen" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "Neue Stücklisten-Position" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "Stücklisten-Position hinzufügen" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "Baugruppen" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "Gefertigte Teile" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "Bauauftragszuweisungen" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Zulieferer" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "Herstellerteile löschen" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "Ausgewählte Stücklistenpositionen löschen?" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "Stücklisten-Position anlegen" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "verknüpftes Teil" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Stückpreis Einkauf - %(currency)s" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Stückpreis Differenz - %(currency)s" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Stückpreis Zulieferer - %(currency)s" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "Stückpreis - %(currency)s" #: 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 "Es fehlt eine Auswahl für die folgende benötigte Spalte" #: 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 "Doppelte Auswahlen gefunden, siehe unten. Reparieren und erneut versuchen." #: 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 "Datei-Felder" #: 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 "Spalte entfernen" #: 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 "Auswahl duplizieren" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "Schritt %(step)s von %(count)s" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "Unzureichende Benutzerrechte." @@ -5012,7 +5110,7 @@ msgstr "Unzureichende Benutzerrechte." msgid "Return to Parts" msgstr "Zurück zu Teilen" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "Teile aus Datei importieren" @@ -5112,13 +5210,13 @@ msgstr "Teil ist virtuell (kein physisches Teil)" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "Inaktiv" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "Teildetails anzeigen" @@ -5127,142 +5225,124 @@ msgstr "Teildetails anzeigen" msgid "This part is a variant of %(link)s" msgstr "Dieses Teil ist eine Variante von %(link)s" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "Auf Lager" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "Für Bauaufträge benötigt" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "Zu Bauaufträgen zugeordnet" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "Benötigte Menge wurde nicht zugewiesen" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "Erforderliche Menge wurde zugewiesen" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "Benötigt für Aufträge" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "Zur Bestellung zugeordnet" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "Herstellbar" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "Im Bau" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "Minimaler Bestand" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "letzte Seriennummer" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "Nach Seriennummer suchen" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "Berechnen" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "Keine passenden Bilder gefunden" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "Teildetails ausblenden" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "Zulieferer-Preise" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "Stückpreis" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "Gesamtkosten" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "Keine Zulieferer-Preise verfügbar" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "Stücklistenpreise" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "Kaufpreis pro Einheit" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "Gesamter Kaufpreis" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "Anmerkung: Stücklistenbepreisung für dieses Teil ist unvollständig" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "Keine Stücklisten-Preise verfügbar" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "Interner Preis" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "Keine Preise für dieses Teil verfügbar" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "Varianten" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Benutzt in" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "Zeitplan" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "Testvorlagen" @@ -5309,69 +5389,69 @@ msgstr "Es sind %(count)s Zulieferer für diesen Teil definiert. Wenn Sie diesen msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "Es gibt %(count)s einzigartige Teile, die für '%(full_name)s' verfolgt werden. Das Löschen dieses Teils wird diese Tracking-Informationen dauerhaft entfernen." -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "Preisspannen" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "Zuliefererkosten anzeigen" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "Einkaufpreis anzeigen" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "Stücklisten-Kosten" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "Verkaufskosten anzeigen" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "Verkaufspreis anzeigen" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "Berechnungsparameter" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "Zuliefererkosten" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "Zur Übersicht gehen" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "Bestandspreise" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "Für dieses Teil sind keine Bestandspreise verfügbar." -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "Interne Kosten" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "Interne Preisspanne hinzufügen" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "Stücklistenkosten" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "Verkaufskosten" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "Keine Verkaufsgeschichte für diesen Teil verfügbar." @@ -5379,8 +5459,8 @@ msgstr "Keine Verkaufsgeschichte für diesen Teil verfügbar." msgid "Set category for the following parts" msgstr "Kategorie für Teile setzen" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "Kein Bestand" @@ -5434,103 +5514,96 @@ msgstr "Neue Teilevariante anlegen" msgid "Create a new variant of template '%(full_name)s'." msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'." -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "Unbekannte Datenbank" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "Teil-Kategorie auswählen" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "Kategorie für {n} Teile setzen" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "Referenzen zuteilen" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "Kein(e)" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "Teil-QR-Code" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "Teilbild auswählen" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "Teilbild aktualisiert" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "Teilbild nicht gefunden" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "Teil-Kategorie bearbeiten" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "Teil-Kategorie löschen" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "Teil-Kategorie wurde gelöscht" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "Kategorieparametervorlage anlegen" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "Kategorieparametervorlage bearbeiten" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "Kategorieparametervorlage löschen" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "neue Preisstaffel hinzufügt" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "Interne Preisspanne bearbeiten" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "Interne Preisspanne löschen" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "Ihre Umgebung verwendet eine veraltete Git-Version. Dies hindert InvenTree daran, Plugin-Details zu laden." @@ -5539,11 +5612,11 @@ msgstr "Ihre Umgebung verwendet eine veraltete Git-Version. Dies hindert InvenTr msgid "Label printing failed" msgstr "Labeldruck fehlgeschlagen" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "Kein Autor gefunden" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "Kein Datum gefunden" @@ -5573,7 +5646,7 @@ msgstr "Ist das Plugin aktiv" #: plugin/models.py:182 msgid "Plugin" -msgstr "Plugin" +msgstr "" #: plugin/samples/integration/sample.py:42 msgid "Enable PO" @@ -5639,92 +5712,92 @@ msgstr "Installation nicht bestätigt" msgid "Either packagename of URL must be provided" msgstr "Entweder Paketname oder URL muss angegeben werden" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" -msgstr "Vorlagendatei '{filename}' fehlt oder existiert nicht" +msgid "Template file '{template}' is missing or does not exist" +msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "Bericht-Vorlage Datei" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "Bericht-Vorlage Beschreibung" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "Bericht Revisionsnummer (autom. erhöht)" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "Muster für die Erstellung von Berichtsdateinamen" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "Bericht-Vorlage ist ein" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "einfügen Installiert in Tests" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "Bauauftrag Filter" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "Teil Filter" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "Bestellungs-Abfragefilter" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "Auftrags-Abfragefilter" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" -msgstr "Snippet" +msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "Ressource" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "Ressource-Beschreibung" @@ -5737,12 +5810,12 @@ msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Seriennummer" @@ -5751,19 +5824,19 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" -msgstr "Test" +msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "Ergebnis" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "Datum" @@ -5781,26 +5854,26 @@ msgid "Installed Items" msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "Seriennummer" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -5840,228 +5913,232 @@ msgstr "nicht mehr verbauen bestätigen" msgid "Confirm removal of installed stock items" msgstr "Entfernen der verbauten Lagerartikel bestätigen" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:489 +#: stock/models.py:525 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:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:517 +#: stock/models.py:553 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:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "Die Verpackung dieses Lagerartikel ist gelagert in" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "verbaut in" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:681 +#: stock/models.py:718 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:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "Lagerartikel-Notizen" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "In Teil umgewandelt" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seriennummern {exists} existieren bereits" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1540 +#: stock/models.py:1604 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:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "Test Notizen" @@ -6069,10 +6146,6 @@ msgstr "Test Notizen" msgid "Purchase price of this stock item" msgstr "Kaufpreis für diesen Lagerartikel" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Kaufwährung dieses Lagerartikels" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" @@ -6098,7 +6171,7 @@ msgstr "Optionales Notizfeld" msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" @@ -6182,46 +6255,46 @@ msgstr "Informationen zur Bestand-Verfolgung" msgid "New Entry" msgstr "neuer Eintrag" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "Kind-Lagerartikel" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "Dieser Lagerartikel hat keine Kinder" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Testdaten" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "Testdaten löschen" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "Testdaten hinzufügen" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "Installierte Lagerartikel" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "Barcode abhängen" @@ -6325,7 +6398,7 @@ 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:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "abgelaufen" @@ -6335,12 +6408,12 @@ 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:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "überfällig" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -6377,7 +6450,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden." #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Kein Lagerort gesetzt" @@ -6395,7 +6468,7 @@ msgstr "Kein Hersteller ausgewählt" #: stock/templates/stock/item_base.html:393 msgid "Tests" -msgstr "Tests" +msgstr "" #: stock/templates/stock/item_base.html:411 msgid "You are not in the list of owners of this item. This stock item cannot be edited." @@ -6475,8 +6548,7 @@ msgid "Sublocations" msgstr "Unter-Lagerorte" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Bestand-Lagerorte" @@ -6492,11 +6564,11 @@ msgstr "Dieser Ort enthält %(n)s untergeordnete Orte" #: stock/templates/stock/location_delete.html:15 #, python-format msgid "If this location is deleted, these child locations will be moved to %(location)s" -msgstr "" +msgstr "Wenn dieser Standort gelöscht wird, werden diese untergeordneten Standorte nach %(location)s verschoben" #: stock/templates/stock/location_delete.html:17 msgid "If this location is deleted, these child locations will be moved to the top level stock location" -msgstr "" +msgstr "Wenn dieser Standort gelöscht wird, werden diese untergeordneten Standorte an den Lagerstandort der obersten Ebene verschoben" #: stock/templates/stock/location_delete.html:25 #, python-format @@ -6506,11 +6578,11 @@ msgstr "Dieser Lagerort enthält %(n)s Lagerartikel" #: stock/templates/stock/location_delete.html:27 #, python-format msgid "If this location is deleted, these stock items will be moved to %(location)s" -msgstr "" +msgstr "Wenn dieser Standort gelöscht wird, werden diese Lagerartikel nach %(location)s verschoben" #: stock/templates/stock/location_delete.html:29 msgid "If this location is deleted, these stock items will be moved to the top level stock location" -msgstr "" +msgstr "Wenn dieser Standort gelöscht wird, werden diese Lagerartikel an den Lagerstandort der obersten Ebene verschoben" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -6553,11 +6625,11 @@ msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel-Verfolgungs-Eintrag löschen wollen?" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "Lagerartikel-Ort bearbeiten" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "Eigentümer notwendig (Eigentümerkontrolle aktiv)" @@ -6597,7 +6669,7 @@ msgstr "Lagerartikel-QR-Code" msgid "Uninstall Stock Items" msgstr "Lagerartikel deinstallieren" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" @@ -6605,85 +6677,86 @@ msgstr "Bestands-Anpassung bestätigen" msgid "Uninstalled stock items" msgstr "Lagerartikel deinstalliert" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "Lagerartikel bearbeiten" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Neuen Lagerort erstellen" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "Neuen Lagerartikel hinzufügen" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "Bestand duplizieren" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "Anzahl kann nicht negativ sein" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "Bestand-Lagerort löschen" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "Lagerartikel löschen" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "Bestand-Tracking-Eintrag löschen" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "Bestand-Verfolgungs-Eintrag bearbeiten" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "Bestand-Verfolgungs-Eintrag hinzufügen" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Zugriff verweigert" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "Keine Berechtigung zum Anzeigen dieser Seite." -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "Seite nicht gefunden" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "Seite existiert nicht" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "Interner Serverfehler" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" -msgstr "Der InvenTree-Server hat einen internen Fehler geworfen" - #: 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 "Weitere Details finden Sie im Fehlerlog im Admin-Interface" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "System wird gewartet" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "Die Seite ist derzeit in Wartung und sollte bald wieder verfügbar sein!" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "Index" +msgstr "" #: templates/InvenTree/index.html:88 msgid "Subscribed Parts" @@ -6709,6 +6782,10 @@ msgstr "kürzlich aktualisiert" msgid "Depleted Stock" msgstr "Verbrauchter Bestand" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "Für Bauaufträge benötigt" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "abgelaufener Bestand" @@ -6773,14 +6850,14 @@ msgstr "Benachrichtigungen" #: templates/InvenTree/notifications/notifications.html:51 #: templates/InvenTree/settings/settings.html:314 msgid "ID" -msgstr "ID" +msgstr "" #: templates/InvenTree/notifications/notifications.html:57 msgid "Age" msgstr "Alter" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "Meldung" @@ -6859,13 +6936,13 @@ msgid "Signup" msgstr "Anmelden" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "Einstellungen" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "URLs" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format @@ -6897,42 +6974,46 @@ msgid "Plugin Settings" msgstr "Plugin-Einstellungen" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." -msgstr "Wenn Sie die folgenden Einstellungen ändern, müssen Sie InvenTree sofort neu starten. Ändern Sie dies nicht während der aktiven Nutzung." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" -msgstr "Plugins" +msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "Plugin installieren" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" -msgstr "Admin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "Autor" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" -msgstr "Version" +msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "Code Beispiel" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "Inaktive Plugins" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "Plugin-Fehlerstapel" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "Stufe" @@ -6970,8 +7051,8 @@ msgid "This plugin was installed as a package" msgstr "Dieses Plugin wurde als Paket installiert" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Dieses Plugin wurde in einem lokalen InvenTree Pfad gefunden" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" @@ -7113,7 +7194,7 @@ msgstr "Bestands-Einstellungen" msgid "Change Password" msgstr "Passwort ändern" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7203,7 +7284,7 @@ msgstr "Sie haben folgende Faktoren zur Verfügung:" #: templates/InvenTree/settings/user.html:187 msgid "TOTP" -msgstr "TOTP" +msgstr "" #: templates/InvenTree/settings/user.html:193 msgid "Static" @@ -7326,8 +7407,8 @@ msgstr "Hilf bei der Übersetzung!" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "Die Übersetzung von InvenTree wird von Nutzern via Crowdin betrieben. Wir ermutigen zur und freuen uns über jede Mithilfe." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" @@ -7396,7 +7477,7 @@ msgstr "Danksagung" #: templates/about.html:83 msgid "Mobile App" -msgstr "Mobile App" +msgstr "" #: templates/about.html:88 msgid "Submit Bug Report" @@ -7426,7 +7507,7 @@ msgid "This email confirmation link expired or is invalid. Please fordern Sie eine neue E-Mail Bestätigung an." #: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "Einloggen" @@ -7443,19 +7524,11 @@ msgid "If you have not created an account yet, then please\n" "sign up first." msgstr "Wenn Sie noch kein Konto erstellt haben, dann bitteregistrieren Sie sich zuerst." -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "Passwort vergessen?" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "InvenTree Demo-Instanz" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "Für Anmeldedetails hier klicken" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "oder SSO verwenden" @@ -7626,15 +7699,15 @@ 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:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "Benötigte Menge" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Verfügbar" @@ -7644,10 +7717,6 @@ msgstr "Verfügbar" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "Sie erhalten diese E-Mail, weil Sie Benachrichtigungen für diesen Teil abonniert haben " -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "InvenTree-Version" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "Klicken Sie auf den folgenden Link, um diesen Teil anzuzeigen" @@ -7764,101 +7833,101 @@ msgstr "Anhang bearbeiten" msgid "Delete attachment" msgstr "Anhang löschen" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "Hier den Barcode scannen" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "Barcode-Daten eingeben" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" -msgstr "Barcode" +msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "Optionale Notizen zu Bestandsübertragung eingeben" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "Notizen eingeben" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "Server-Fehler" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "Unbekannte Antwort von Server erhalten" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "Ungültige Antwort von Server" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "Barcode unterhalb scannen" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "Barcode scannen" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "keine URL in der Antwort" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "Barcode mit Lagerartikel verknüpfen" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barcode entfernt" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "Entfernen" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "Lagerartikel entfernen" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "Lagerartikel in Lagerort buchen" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "Einbuchen" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" -msgstr "" +msgstr "Kein Barcode vorhanden" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "Lagerartikel bereits gescannt" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "Lagerartikel besteht bereits in diesem Lagerort" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "Lagerartikel hinzugefügt" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "Barcode entspricht keinem Lagerartikel" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "In Lagerorten buchen" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "Barcode entspricht keinem Lagerort" @@ -7875,12 +7944,12 @@ msgid "Download BOM Template" msgstr "Vorlage einer Stückliste herunterladen" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" -msgstr "Format" +msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "Dateiformat auswählen" @@ -7956,75 +8025,84 @@ msgstr "Ersatzteil hinzufügen" msgid "Edit BOM Item Substitutes" msgstr "Stücklisten Ersatzteile bearbeiten" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "Varianten erlaubt" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "Unterbaugruppe öffnen" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" +msgstr "Kein Lagerbestand verfügbar" + +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" -msgstr "" +msgstr "Enthält Ersatzbestand" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "Ersatzteile" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "Kaufpreisspanne" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "Durchschnittlicher Kaufpreis" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "Stückliste anzeigen" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "Stücklisten-Position kontrollieren" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "Diese Position wurde kontrolliert" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "Ersatzteile bearbeiten" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "Stücklisten-Position bearbeiten" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "Stücklisten-Position löschen" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "Keine Stücklisten-Position(en) gefunden" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "benötigtes Teil" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "Geerbt von übergeordneter Stückliste" @@ -8049,12 +8127,12 @@ msgid "Complete Build Order" msgstr "Bauauftrag fertigstellen" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "Nächste verfügbare Seriennummer" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "Letzte Seriennummer" @@ -8102,173 +8180,193 @@ msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfer msgid "Unallocate Stock Items" msgstr "Lagerartikel zurücknehmen" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "Endprodukte auswählen" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "Mindestens ein Endprodukt muss ausgewählt werden" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "Endprodukt" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "Endprodukte fertigstellen" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "Endprodukte entfernen" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "Keine Allokationen für Bauauftrag gefunden" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "Standort nicht angegeben" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "Zuordnung bearbeiten" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "Zuordnung entfernen" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "Anzahl pro" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "Zugeordnet" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "lädt" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "Bestand bauen" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "Bestand zuweisen" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Teile auswählen" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "Sie müssen mindestens ein Teil auswählen" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "Alle Teile zugeordnet" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 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:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Bestandszuordnung bestätigen" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "Lagerartikel für Bauauftrag zuweisen" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "Keine passenden Lagerstandorte" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "Keine passenden Lagerbestände" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "Automatische Lagerzuordnung" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Lagerartikel werden automatisch diesem Bauauftrag zugewiesen, entsprechend den angegebenen Richtlinien" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" -msgstr "" +msgstr "Wenn ein Standort angegeben ist, wird der Lagerbestand nur von diesem Ort zugewiesen" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "" +msgstr "Wenn der Lagerbestand als austauschbar gilt, wird er vom ersten Standort zugewiesen, an dem er gefunden wird" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "" +msgstr "Wenn ein Ersatzbestand erlaubt ist, wird es dort verwendet, wo kein Vorrat des Primärteils gefunden werden kann" -#: templates/js/translated/build.js:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "Lagerartikel zuordnen" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "Auswählen" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "Keine Information" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -8288,7 +8386,7 @@ msgstr "Herstellerteil ändern" msgid "Delete Manufacturer Part" msgstr "Herstellerteil löschen" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "Zulieferer hinzufügen" @@ -8333,34 +8431,34 @@ msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "Vorlagenteil" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "Keine Parameter gefunden" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "Parameter löschen" @@ -8468,16 +8566,16 @@ msgstr "JA" msgid "NO" msgstr "NEIN" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" -msgstr "" +msgstr "Notiz aktualisiert" #: templates/js/translated/label.js:39 msgid "Labels sent to printer" msgstr "Label an den Drucker gesendet" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "Lagerartikel auswählen" @@ -8593,294 +8691,332 @@ msgstr "Fehler bei Formulardaten-Anfrage" msgid "Company ID" msgstr "Firmen-ID" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "Bestands-ID" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "Standort-ID" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "Bauauftrag-ID" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "Bestell-ID" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "Sendungs-ID" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "Kategorie-ID" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "Herstellerteil-ID" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "Zuliefererteil-ID" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "Als ungelesen markieren" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "Als gelesen markieren" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "Keine ungelesenen Benachrichtigungen" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "Benachrichtigungen erscheinen hier" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "Dieser Sendung wurden keine Artikel zugewiesen" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "Die folgenden Artikel werden verschickt" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "Sendung fertigstellen" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "Sendung bestätigen" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "Sendung anlegen" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "Kunden hinzufügen" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "Auftrag anlegen" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "Bestellung exportieren" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "Positionen auswählen" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "Mindestens eine Position muss ausgewählt werden" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "Losnummer hinzufügen" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "Seriennummern hinzufügen" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "Status" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "Bestellnummer" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "Bestellt" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "Empfang der Teile bestätigen" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "Bestellpositionen erhalten" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "Bestellung überfällig" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "Position duplizieren" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "Position löschen" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "Keine Positionen gefunden" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "Summe" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "Stück-Preis" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "Gesamtpreis" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "Diese Position ist überfällig" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "Position empfangen" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "Position duplizieren" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "Position bearbeiten" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "Position löschen" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "Ungültiger Kunde" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "Sendung bearbeiten" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "Sendung fertigstellen" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "Sendung löschen" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "Sendung bearbeiten" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "Sendung löschen" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "Keine passenden Sendungen gefunden" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "Sendungsreferenz" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "Nicht versandt" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "Nachverfolgen" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Bestandszuordnung bestätigen" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "Artikel zu Kundenauftrag zuweisen" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "Keine Allokationen für Verkaufsaufträge gefunden" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "Bestandszuordnung bearbeiten" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "Löschvorgang bestätigen" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "an Kunde versand" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "Lagerstandort nicht angegeben" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "Seriennummern zuweisen" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "Bestand kaufen" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "Preis berechnen" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "Kann nicht gelöscht werden, da Artikel versandt wurden" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "Kann nicht gelöscht werden, da Artikel zugewiesen sind" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "Seriennummern zuweisen" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "Stückpreis aktualisieren" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Teileigenschaften" @@ -8961,177 +9097,177 @@ msgstr "Parameterdaten vom Originalteil kopieren" msgid "Parent part category" msgstr "Übergeordnete Teilkategorie" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "Teil bearbeiten" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "Teil bearbeitet" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "Teil-Variante anlegen" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "Benachrichtigungen für dieses Teil abonnieren" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "Stückliste prüfen" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "überprüfte Stückliste" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "Stückliste kopieren" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" -msgstr "" +msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "Nachverfolgbares Teil" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "virtuelles Teil" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "Abonnierter Teil" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "Nicht verfügbar" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Listenansicht" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Rasteransicht" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Baumansicht" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Pfad" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Testvorlagen" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "Dieses Testergebnis ist für ein Hauptteil" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "Testergebnis-Vorlage bearbeiten" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "Testergebnis-Vorlage löschen" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "Keine ${human_name} Informationen gefunden" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "${human_name} bearbeiten" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "${human_name} löschen" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "Aktueller Lagerbestand" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "Keine Zeitplanung für dieses Teil vorhanden" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "Geplante Lagermengen" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "Einzelpreis" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "Einzelpreisdifferenz" @@ -9225,328 +9361,328 @@ msgstr "Lager-Serialisierung bestätigen" msgid "Parent stock location" msgstr "Übergeordneter Lagerort" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "Neuer Lagerstandort" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "Dieser Teil kann nicht serialisiert werden" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "Lagerartikel dupliziert" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "Neuer Lagerartikel erstellt" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "Mehrere Lagerartikel erstellt" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "Seriennummer finden" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "Seriennummer eingeben" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "Eine Seriennummer eingeben" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "Keine passende Seriennummer" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "Mehrere Ergebnisse gefunden" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "Bestand Zuweisung bestätigen" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "Einem Kunden zuordnen" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "Zusammenführung der Artikel bestätigen" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "Artikel zusammenführen" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "Bestand verschieben" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "Verschieben" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "Bestand zählen" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "Anzahl" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "Bestand entfernen" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "Entfernen" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "Hinzufügen" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "Bestand löschen" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "Bestandsanzahl angeben" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "Sie müssen mindestens einen Lagerartikel auswählen" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "ERFOLGREICH" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "FEHLGESCHLAGEN" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "KEIN ERGEBNIS" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "Test bestanden" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "Testergebnis hinzufügen" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "Keine Testergebnisse gefunden" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "Testdatum" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "Testergebnis löschen" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "In Arbeit" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "In Lagerartikel installiert" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "Auftrag zugewiesen" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "Lagerartikel wird produziert" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "Lagerartikel wurde Auftrag zugewiesen" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "Lagerartikel wurde Kunden zugewiesen" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "Lagerartikel ist abgelaufen" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "Lagerartikel läuft demnächst ab" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "Serialisierter Lagerartikel wurde zugewiesen" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "Lagerartikel wurde vollständig zugewiesen" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "Lagerartikel wurde teilweise zugewiesen" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "Lagerartikel in anderem Element verbaut" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "Lagerartikel abgewiesen" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "Lagerartikel verloren" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "Lagerartikel zerstört" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "gelöscht" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "Inventur" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "Zuliefererteil nicht angegeben" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerartikel" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "Status setzen" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "Status Code setzen" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "Status Code muss ausgewählt werden" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" -msgstr "Details" +msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "Artikelinformationen nicht verfügbar" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "Standort nicht mehr vorhanden" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "Bestellung existiert nicht mehr" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "Kunde existiert nicht mehr" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "Lagerartikel existiert nicht mehr" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "Hinzugefügt" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "Entfernt" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "Tracking-Eintrag bearbeiten" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "Tracking-Eintrag löschen" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "Keine installierten Elemente" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "Lagerartikel entfernen" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "Einen weiteren Lagerartikel in dieses Teil installiert" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 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:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "Dieser Lagerartikel ist aktuell vorhanden" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" -msgstr "Der Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +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:2676 msgid "Select part to install" msgstr "Teil zur Installation auswählen" @@ -9577,12 +9713,12 @@ msgstr "Lagerorte einschließen" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "Unterkategorien einschließen" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "Abonniert" @@ -9619,12 +9755,12 @@ msgid "Serial number" msgstr "Seriennummer" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Losnummer" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "Aktive Teile" @@ -9693,68 +9829,88 @@ msgstr "zeige zu Kunden zugeordnete Einträge" msgid "Stock status" msgstr "Status" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "Hat Batch-Code" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "Nachverfolgt" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "Lagerbestand wird entweder per Batch-Code oder Seriennummer verfolgt" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "Hat Einkaufspreis" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "Bestand mit Einkaufspreis anzeigen" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "Zeige abgelaufene Lagerartikel" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "Bestand, der bald ablaufen, anzeigen" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "Test bestanden" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "Installierte Elemente einschließen" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "Bauauftrags-Status" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "Mir zugewiesen" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "Bestellstatus" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "ausstehend" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "Teile in Unterkategorien einschließen" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "Hat IPN" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "Teil hat Interne Teilenummer" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "Aktive Teile anzeigen" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "Auf Lager" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "Verfügbarer Lagerbestand" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "Käuflich" @@ -9794,7 +9950,7 @@ msgstr "von" msgid "rows" msgstr "Zeilen" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9824,41 +9980,37 @@ msgstr "Spalten" msgid "All" msgstr "Alle" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Kaufen" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Verkaufen" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "Benachrichtigungen anzeigen" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "Neue Benachrichtigungen" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Ausloggen" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Einloggen" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "Über InvenTree" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "InvenTree Demo-Modus" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Speichern" #: templates/notifications.html:13 msgid "Show all notifications and history" @@ -9898,7 +10050,7 @@ msgstr "Keine Treffer gefunden" #: templates/stats.html:9 msgid "Server" -msgstr "Server" +msgstr "" #: templates/stats.html:13 msgid "Instance Name" @@ -10048,35 +10200,35 @@ msgstr "Berechtigungen" msgid "Important dates" msgstr "wichtige Daten" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Gruppe" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Ansicht" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Ändern" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.mo b/InvenTree/locale/el/LC_MESSAGES/django.mo deleted file mode 100644 index dbe42ffd5b..0000000000 Binary files a/InvenTree/locale/el/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 8438feb019..ef8368c265 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: el\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -194,42 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -241,7 +249,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.mo b/InvenTree/locale/en/LC_MESSAGES/django.mo deleted file mode 100644 index 71cbdf3e9d..0000000000 Binary files a/InvenTree/locale/en/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index c752304ce6..f096cd681e 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 22:21+0000\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:64 +#: InvenTree/api.py:57 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:110 +#: InvenTree/api.py:103 msgid "No action specified" msgstr "" -#: InvenTree/api.py:124 +#: InvenTree/api.py:118 msgid "No matching action found" msgstr "" @@ -34,308 +34,386 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:26 order/forms.py:37 order/forms.py:48 order/forms.py:59 -#: order/forms.py:70 part/forms.py:108 templates/account/email_confirm.html:20 -#: templates/js/translated/forms.js:595 +#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 +#: order/forms.py:57 templates/account/email_confirm.html:20 +#: templates/js/translated/forms.js:601 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:136 +#: InvenTree/forms.py:142 msgid "Confirm delete" msgstr "" -#: InvenTree/forms.py:137 +#: InvenTree/forms.py:143 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:168 +#: InvenTree/forms.py:174 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:169 +#: InvenTree/forms.py:175 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:176 +#: InvenTree/forms.py:182 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:177 +#: InvenTree/forms.py:183 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:209 +#: InvenTree/forms.py:215 msgid "Select Category" msgstr "" -#: InvenTree/forms.py:230 +#: InvenTree/forms.py:236 msgid "Email (again)" msgstr "" -#: InvenTree/forms.py:234 +#: InvenTree/forms.py:240 msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:254 +#: InvenTree/forms.py:260 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:430 +#: InvenTree/helpers.py:449 #, python-brace-format -msgid "Duplicate serial: {n}" +msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:437 order/models.py:318 order/models.py:440 -#: stock/views.py:1264 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:440 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:462 InvenTree/helpers.py:465 InvenTree/helpers.py:468 -#: InvenTree/helpers.py:493 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:498 +#: InvenTree/helpers.py:522 #, python-brace-format -msgid "Duplicate serial: {g}" +msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:506 +#: InvenTree/helpers.py:530 +#, python-brace-format +msgid "Invalid/no group {group}" +msgstr "" + +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:510 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:185 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:186 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 -#: templates/js/translated/attachment.js:117 +#: InvenTree/models.py:197 stock/models.py:2202 +#: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:198 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:163 part/models.py:797 +#: InvenTree/models.py:204 company/models.py:131 company/models.py:348 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:540 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:208 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 -#: common/models.py:1186 part/models.py:2205 part/models.py:2225 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:218 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:241 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:264 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:274 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:277 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:284 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:291 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:326 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 -#: label/models.py:112 part/models.py:741 part/models.py:2389 -#: report/models.py:181 templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 +#: templates/InvenTree/notifications/notifications.html:84 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 +#: templates/InvenTree/settings/plugin_settings.html:23 +#: templates/InvenTree/settings/settings.html:320 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 -#: build/templates/build/detail.html:25 company/models.py:354 +#: InvenTree/models.py:349 build/models.py:209 +#: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 -#: part/templates/part/part_base.html:163 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 +#: part/templates/part/part_base.html:167 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 -#: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 -#: templates/js/translated/company.js:345 -#: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: stock/templates/stock/location.html:94 +#: templates/InvenTree/settings/plugin_settings.html:33 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 +#: templates/js/translated/company.js:551 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:350 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:358 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" -#: InvenTree/settings.py:670 -msgid "German" +#: InvenTree/serializers.py:334 +msgid "Invalid value" msgstr "" -#: InvenTree/settings.py:671 -msgid "Greek" +#: InvenTree/serializers.py:355 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:356 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:380 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:386 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:407 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:410 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:533 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:536 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:623 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:632 +#, python-brace-format +msgid "Duplicate column: '{col}'" msgstr "" #: InvenTree/settings.py:672 -msgid "English" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Spanish" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Spanish (Mexican)" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "French" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Hebrew" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Italian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Japanese" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Korean" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Dutch" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Norwegian" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Polish" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Portugese" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Russian" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 -msgid "Swedish" +msgid "Dutch" msgstr "" #: InvenTree/settings.py:686 -msgid "Thai" +msgid "Norwegian" msgstr "" #: InvenTree/settings.py:687 -msgid "Turkish" +msgid "Polish" msgstr "" #: InvenTree/settings.py:688 -msgid "Vietnamese" +msgid "Portuguese" msgstr "" #: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" -#: InvenTree/status.py:94 +#: InvenTree/status.py:110 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:98 +#: InvenTree/status.py:114 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:101 +#: InvenTree/status.py:117 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:311 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -343,12 +421,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 +#: order/templates/order/order_base.html:128 +#: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -362,8 +442,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:148 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -387,630 +467,746 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:269 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:271 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:274 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:276 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:283 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:285 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:288 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:208 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:294 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:295 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:297 +#: InvenTree/status_codes.py:307 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" -#: InvenTree/validators.py:23 +#: InvenTree/validators.py:25 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:51 +#: InvenTree/validators.py:53 msgid "Invalid character in part name" msgstr "" -#: InvenTree/validators.py:64 +#: InvenTree/validators.py:66 #, python-brace-format msgid "IPN must match regex pattern {pat}" msgstr "" -#: InvenTree/validators.py:78 InvenTree/validators.py:92 -#: InvenTree/validators.py:106 +#: InvenTree/validators.py:80 InvenTree/validators.py:94 +#: InvenTree/validators.py:108 #, python-brace-format msgid "Reference must match pattern {pattern}" msgstr "" -#: InvenTree/validators.py:114 +#: InvenTree/validators.py:116 #, python-brace-format msgid "Illegal character in name ({x})" msgstr "" -#: InvenTree/validators.py:133 InvenTree/validators.py:149 +#: InvenTree/validators.py:137 InvenTree/validators.py:153 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:151 +#: InvenTree/validators.py:155 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:158 -msgid "Overage must be an integer value or a percentage" +#: InvenTree/validators.py:162 +msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:101 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" -#: barcodes/api.py:53 barcodes/api.py:150 +#: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" msgstr "" -#: barcodes/api.py:126 +#: barcodes/api.py:132 msgid "No match found for barcode data" msgstr "" -#: barcodes/api.py:128 +#: barcodes/api.py:134 msgid "Match found for barcode data" msgstr "" -#: barcodes/api.py:153 +#: barcodes/api.py:159 msgid "Must provide stockitem parameter" msgstr "" -#: barcodes/api.py:160 +#: barcodes/api.py:166 msgid "No matching stock item found" msgstr "" -#: barcodes/api.py:190 -msgid "Barcode already matches StockItem object" +#: barcodes/api.py:197 +msgid "Barcode already matches Stock Item" msgstr "" -#: barcodes/api.py:194 -msgid "Barcode already matches StockLocation object" +#: barcodes/api.py:201 +msgid "Barcode already matches Stock Location" msgstr "" -#: barcodes/api.py:198 -msgid "Barcode already matches Part object" +#: barcodes/api.py:205 +msgid "Barcode already matches Part" msgstr "" -#: barcodes/api.py:204 barcodes/api.py:216 -msgid "Barcode hash already matches StockItem object" +#: barcodes/api.py:211 barcodes/api.py:223 +msgid "Barcode hash already matches Stock Item" msgstr "" -#: barcodes/api.py:222 -msgid "Barcode associated with StockItem" +#: barcodes/api.py:229 +msgid "Barcode associated with Stock Item" msgstr "" -#: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:132 -#: build/templates/build/detail.html:35 common/models.py:1225 -#: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/forms.py:102 order/models.py:729 order/models.py:991 -#: order/templates/order/order_wizard/match_parts.html:30 -#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 -#: part/forms.py:239 part/forms.py:255 part/models.py:2576 -#: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:969 part/templates/part/detail.html:1055 -#: part/templates/part/part_pricing.html:16 -#: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 -#: report/templates/report/inventree_so_report.html:91 -#: report/templates/report/inventree_test_report_base.html:81 -#: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:167 -#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 -#: templates/js/translated/build.js:235 templates/js/translated/build.js:435 -#: templates/js/translated/build.js:629 templates/js/translated/build.js:639 -#: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 -#: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 -msgid "Quantity" -msgstr "" - -#: build/forms.py:37 -msgid "Enter quantity for build output" -msgstr "" - -#: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 -msgid "Serial Numbers" -msgstr "" - -#: build/forms.py:43 -msgid "Enter serial numbers for build outputs" -msgstr "" - -#: build/forms.py:49 -msgid "Confirm creation of build output" -msgstr "" - -#: build/forms.py:70 -msgid "Confirm deletion of build output" -msgstr "" - -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:20 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:20 build/views.py:62 msgid "Confirm build cancellation" msgstr "" -#: build/models.py:133 +#: build/models.py:135 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:137 build/templates/build/build_base.html:9 +#: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:397 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" -#: build/models.py:138 build/templates/build/build_base.html:13 +#: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:42 -#: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 -#: templates/InvenTree/search.html:145 -#: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 +#: order/templates/order/sales_order_detail.html:114 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: templates/InvenTree/search.html:139 +#: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" msgstr "" -#: build/models.py:198 +#: build/models.py:200 msgid "Build Order Reference" msgstr "" -#: build/models.py:199 order/models.py:249 order/models.py:556 -#: order/models.py:736 part/models.py:2585 -#: part/templates/part/bom_upload/match_parts.html:30 -#: report/templates/report/inventree_po_report.html:92 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 +#: part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" -#: build/models.py:210 +#: build/models.py:212 msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:164 -#: build/templates/build/detail.html:88 +#: build/models.py:221 build/templates/build/build_base.html:169 +#: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:220 +#: build/models.py:222 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:77 -#: build/templates/build/detail.html:30 company/models.py:705 -#: order/models.py:789 order/models.py:860 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 -#: part/models.py:2151 part/models.py:2167 part/models.py:2186 -#: part/models.py:2203 part/models.py:2305 part/models.py:2427 -#: part/models.py:2560 part/models.py:2867 -#: part/templates/part/part_app_base.html:8 +#: build/models.py:227 build/templates/build/build_base.html:77 +#: build/templates/build/detail.html:29 company/models.py:706 +#: order/models.py:966 order/models.py:1055 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 +#: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 -#: templates/InvenTree/search.html:86 +#: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214 -#: templates/js/translated/bom.js:393 templates/js/translated/build.js:620 -#: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 -#: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 -#: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" -#: build/models.py:233 +#: build/models.py:235 msgid "Select part to build" msgstr "" -#: build/models.py:238 +#: build/models.py:240 msgid "Sales Order Reference" msgstr "" -#: build/models.py:242 +#: build/models.py:244 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1347 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" -#: build/models.py:251 +#: build/models.py:253 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:256 +#: build/models.py:258 msgid "Destination Location" msgstr "" -#: build/models.py:260 +#: build/models.py:262 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:264 +#: build/models.py:266 msgid "Build Quantity" msgstr "" -#: build/models.py:267 +#: build/models.py:269 msgid "Number of stock items to build" msgstr "" -#: build/models.py:271 +#: build/models.py:273 msgid "Completed items" msgstr "" -#: build/models.py:273 +#: build/models.py:275 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:234 +#: build/models.py:279 msgid "Build Status" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:289 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1104 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:296 order/models.py:578 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" -#: build/models.py:297 +#: build/models.py:299 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:300 order/models.py:291 -#: templates/js/translated/build.js:1697 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" -#: build/models.py:306 +#: build/models.py:308 msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1668 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" -#: build/models.py:315 +#: build/models.py:317 msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:185 -#: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:162 part/models.py:940 +#: build/models.py:325 build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:115 order/models.py:148 +#: order/templates/order/order_base.html:170 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" -#: build/models.py:324 +#: build/models.py:326 msgid "User responsible for this build order" msgstr "" -#: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:102 +#: build/models.py:331 build/templates/build/detail.html:101 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:347 stock/models.py:538 -#: stock/templates/stock/item_base.html:367 +#: part/templates/part/part_base.html:346 stock/models.py:667 +#: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:334 build/serializers.py:201 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:183 order/models.py:738 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 +#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 +#: stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" -#: build/models.py:335 +#: build/models.py:337 msgid "Extra build notes" msgstr "" -#: build/models.py:710 +#: build/models.py:750 msgid "No build output specified" msgstr "" -#: build/models.py:713 +#: build/models.py:753 msgid "Build output is already completed" msgstr "" -#: build/models.py:716 +#: build/models.py:756 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1108 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1117 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1127 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1133 order/models.py:964 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1139 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1193 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:339 -#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 -#: templates/navbar.html:33 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1254 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1270 build/serializers.py:328 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:361 -#: templates/js/translated/build.js:408 templates/js/translated/build.js:413 -#: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 +#: stock/serializers.py:753 stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:351 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1271 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1284 +#: build/models.py:1363 build/serializers.py:193 +#: build/templates/build/build_base.html:82 +#: build/templates/build/detail.html:34 common/models.py:1489 +#: company/forms.py:42 company/templates/company/supplier_part.html:251 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 +#: order/templates/order/order_wizard/match_parts.html:30 +#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 +#: part/templates/part/part_pricing.html:16 +#: part/templates/part/upload_bom.html:53 +#: report/templates/report/inventree_build_order_base.html:114 +#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_so_report.html:91 +#: report/templates/report/inventree_test_report_base.html:81 +#: report/templates/report/inventree_test_report_base.html:139 +#: stock/forms.py:139 stock/serializers.py:293 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:246 +#: stock/templates/stock/item_base.html:254 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 +msgid "Quantity" +msgstr "" + +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1292 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1293 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:357 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" -#: build/serializers.py:146 +#: build/serializers.py:150 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:150 +#: build/serializers.py:154 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:154 +#: build/serializers.py:158 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:158 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:307 -#: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 -#: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 -msgid "Location" +#: build/serializers.py:194 +msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:191 -msgid "Location for completed build outputs" -msgstr "" - -#: build/serializers.py:197 build/templates/build/build_base.html:137 -#: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:173 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 -msgid "Status" -msgstr "" - -#: build/serializers.py:213 -msgid "A list of build outputs must be provided" -msgstr "" - -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2700 -#: part/models.py:2859 -msgid "BOM Item" -msgstr "" - -#: build/serializers.py:269 -msgid "Build output" -msgstr "" - -#: build/serializers.py:278 -msgid "Build output must point to the same build" -msgstr "" - -#: build/serializers.py:319 -msgid "bom_item.part must point to the same part as the build order" -msgstr "" - -#: build/serializers.py:334 -msgid "Item must be in stock" -msgstr "" - -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" +#: build/serializers.py:213 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:216 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 +#: stock/forms.py:78 stock/serializers.py:314 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:231 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:245 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:246 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:280 stock/api.py:593 +msgid "The following serial numbers already exist" +msgstr "" + +#: build/serializers.py:333 build/serializers.py:406 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 +#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 +#: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 +msgid "Location" +msgstr "" + +#: build/serializers.py:377 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 +msgid "Status" +msgstr "" + +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + #: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:448 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:458 templates/js/translated/build.js:151 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:463 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:464 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:474 templates/js/translated/build.js:155 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:483 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:486 build/templates/build/build_base.html:95 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:524 +msgid "Build output" +msgstr "" + +#: build/serializers.py:533 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:580 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:595 stock/serializers.py:642 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:396 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:403 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:431 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/tasks.py:92 +#: build/serializers.py:749 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:757 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:758 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:763 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:764 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:769 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:770 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/tasks.py:98 msgid "Stock required for build order" msgstr "" @@ -1033,7 +1229,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:215 build/views.py:56 +#: build/templates/build/build_base.html:220 build/views.py:53 msgid "Cancel Build" msgstr "" @@ -1043,304 +1239,294 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:82 +#: build/templates/build/build_base.html:87 msgid "Build Description" msgstr "" -#: build/templates/build/build_base.html:91 +#: build/templates/build/build_base.html:101 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:108 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:105 +#: build/templates/build/build_base.html:115 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:110 +#: build/templates/build/build_base.html:120 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:115 +#: build/templates/build/build_base.html:125 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:120 +#: build/templates/build/build_base.html:130 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:144 -#: order/templates/order/sales_order_base.html:141 +#: build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:131 order/models.py:873 +#: order/templates/order/order_base.html:156 +#: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:156 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:151 -#: build/templates/build/build_base.html:196 +#: build/templates/build/build_base.html:156 +#: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:322 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:158 -#: build/templates/build/detail.html:68 build/templates/build/detail.html:143 -#: templates/js/translated/build.js:1641 -#: templates/js/translated/table_filters.js:304 +#: build/templates/build/build_base.html:163 +#: build/templates/build/detail.html:67 build/templates/build/detail.html:142 +#: order/templates/order/sales_order_base.html:170 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:171 -#: build/templates/build/detail.html:95 order/models.py:857 +#: build/templates/build/build_base.html:176 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 -#: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:301 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:291 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:178 -#: build/templates/build/detail.html:109 +#: build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:108 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:224 +#: build/templates/build/build_base.html:229 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" -#: build/templates/build/build_output_create.html:7 -msgid "The Bill of Materials contains trackable parts" -msgstr "" - -#: build/templates/build/build_output_create.html:8 -msgid "Build outputs must be generated individually." -msgstr "" - -#: build/templates/build/build_output_create.html:9 -msgid "Multiple build outputs will be created based on the quantity specified." -msgstr "" - -#: build/templates/build/build_output_create.html:15 -msgid "Trackable parts can have serial numbers specified" -msgstr "" - -#: build/templates/build/build_output_create.html:16 -msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" - #: build/templates/build/cancel.html:5 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" +#: build/templates/build/delete_build.html:5 +msgid "Are you sure you want to delete this build?" msgstr "" -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - -#: build/templates/build/detail.html:16 +#: build/templates/build/detail.html:15 msgid "Build Details" msgstr "" -#: build/templates/build/detail.html:39 +#: build/templates/build/detail.html:38 msgid "Stock Source" msgstr "" -#: build/templates/build/detail.html:44 +#: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" -#: build/templates/build/detail.html:57 +#: build/templates/build/detail.html:56 msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:647 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: build/templates/build/detail.html:80 +#: stock/templates/stock/item_base.html:315 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:233 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" -#: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:131 -#: order/templates/order/sales_order_base.html:135 -#: templates/js/translated/build.js:1663 +#: build/templates/build/detail.html:126 +#: order/templates/order/order_base.html:143 +#: order/templates/order/sales_order_base.html:157 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" -#: build/templates/build/detail.html:138 +#: build/templates/build/detail.html:137 msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:147 +#: build/templates/build/detail.html:146 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:158 build/templates/build/sidebar.html:17 +#: build/templates/build/detail.html:157 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:173 +#: build/templates/build/detail.html:172 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1202 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" -#: build/templates/build/detail.html:178 +#: build/templates/build/detail.html:177 msgid "Unallocate Stock" msgstr "" -#: build/templates/build/detail.html:180 -msgid "Allocate stock to build" +#: build/templates/build/detail.html:179 +msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:181 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:180 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:183 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:184 +#: build/templates/build/detail.html:186 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:185 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:173 +#: build/templates/build/detail.html:187 +#: company/templates/company/detail.html:37 +#: company/templates/company/detail.html:84 order/views.py:463 +#: part/templates/part/category.html:174 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:197 +#: build/templates/build/detail.html:199 msgid "Untracked stock has been fully allocated for this Build Order" msgstr "" -#: build/templates/build/detail.html:201 +#: build/templates/build/detail.html:203 msgid "Untracked stock has not been fully allocated for this Build Order" msgstr "" -#: build/templates/build/detail.html:208 +#: build/templates/build/detail.html:210 msgid "Allocate selected items" msgstr "" -#: build/templates/build/detail.html:218 +#: build/templates/build/detail.html:220 msgid "This Build Order does not have any associated untracked BOM items" msgstr "" -#: build/templates/build/detail.html:227 +#: build/templates/build/detail.html:229 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:231 +#: build/templates/build/detail.html:233 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:232 +#: build/templates/build/detail.html:234 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:246 +#: build/templates/build/detail.html:248 msgid "Output Actions" msgstr "" -#: build/templates/build/detail.html:250 -msgid "Complete selected items" +#: build/templates/build/detail.html:252 +msgid "Complete selected build outputs" msgstr "" -#: build/templates/build/detail.html:251 +#: build/templates/build/detail.html:253 msgid "Complete outputs" msgstr "" -#: build/templates/build/detail.html:266 +#: build/templates/build/detail.html:255 +msgid "Delete selected build outputs" +msgstr "" + +#: build/templates/build/detail.html:256 +msgid "Delete outputs" +msgstr "" + +#: build/templates/build/detail.html:263 +#: stock/templates/stock/location.html:188 templates/stock_table.html:27 +msgid "Printing Actions" +msgstr "" + +#: build/templates/build/detail.html:267 build/templates/build/detail.html:268 +#: stock/templates/stock/location.html:192 templates/stock_table.html:31 +msgid "Print labels" +msgstr "" + +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:60 -#: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 -#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 -#: stock/templates/stock/stock_sidebar.html:19 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:294 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:298 build/templates/build/detail.html:453 -#: company/templates/company/detail.html:188 -#: company/templates/company/detail.html:215 -#: order/templates/order/purchase_order_detail.html:80 -#: order/templates/order/purchase_order_detail.html:108 -#: order/templates/order/sales_order_detail.html:72 -#: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 -#: stock/templates/stock/item.html:205 -msgid "Edit Notes" -msgstr "" - -#: build/templates/build/detail.html:477 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:478 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:300 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1364,91 +1550,35 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" -#: build/views.py:76 +#: build/views.py:73 msgid "Build was cancelled" msgstr "" -#: build/views.py:88 -msgid "Create Build Output" -msgstr "" - -#: build/views.py:106 -msgid "Maximum output quantity is " -msgstr "" - -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 -msgid "Serial numbers already exist" -msgstr "" - -#: build/views.py:131 -msgid "Serial numbers required for trackable build output" -msgstr "" - -#: build/views.py:197 -msgid "Delete Build Output" -msgstr "" - -#: build/views.py:218 -msgid "Confirm unallocation of build stock" -msgstr "" - -#: build/views.py:219 stock/views.py:385 -msgid "Check the confirmation box" -msgstr "" - -#: build/views.py:231 -msgid "Build output does not match build" -msgstr "" - -#: build/views.py:233 -msgid "Build output must be specified" -msgstr "" - -#: build/views.py:245 -msgid "Build output deleted" -msgstr "" - -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:114 msgid "Delete Build Order" msgstr "" -#: common/files.py:67 +#: common/files.py:65 msgid "Unsupported file format: {ext.upper()}" msgstr "" -#: common/files.py:69 +#: common/files.py:67 msgid "Error reading file (invalid encoding)" msgstr "" -#: common/files.py:74 +#: common/files.py:72 msgid "Error reading file (invalid format)" msgstr "" -#: common/files.py:76 +#: common/files.py:74 msgid "Error reading file (incorrect dimension)" msgstr "" -#: common/files.py:78 +#: common/files.py:76 msgid "Error reading file (data could be corrupted)" msgstr "" @@ -1469,704 +1599,936 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:970 common/models.py:1178 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:381 +msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:342 +#: common/models.py:383 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 -msgid "InvenTree Instance Name" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:711 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:726 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:731 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:30 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2429 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:373 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:385 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:894 -#: templates/js/translated/table_filters.js:389 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:905 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:910 -#: templates/js/translated/table_filters.js:397 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:900 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:147 +#: common/models.py:848 part/models.py:996 +#: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:886 +msgid "Show Price History" +msgstr "" + +#: common/models.py:887 +msgid "Display historical pricing for Part" +msgstr "" + +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 -msgid "Group by Part" -msgstr "" - -#: common/models.py:883 -msgid "Group stock items by part reference in table views" -msgstr "" - -#: common/models.py:889 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1001 -msgid "Show subscribed parts" +#: common/models.py:1083 +msgid "Enforce MFA" msgstr "" -#: common/models.py:1002 -msgid "Show subscribed parts on the homepage" +#: common/models.py:1084 +msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1007 -msgid "Show subscribed categories" +#: common/models.py:1090 +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1008 -msgid "Show subscribed part categories on the homepage" -msgstr "" - -#: common/models.py:1013 -msgid "Show latest parts" -msgstr "" - -#: common/models.py:1014 -msgid "Show latest parts on the homepage" -msgstr "" - -#: common/models.py:1019 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1020 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1026 -msgid "Show unvalidated BOMs" -msgstr "" - -#: common/models.py:1027 -msgid "Show BOMs that await validation on the homepage" -msgstr "" - -#: common/models.py:1032 -msgid "Show recent stock changes" -msgstr "" - -#: common/models.py:1033 -msgid "Show recently changed stock items on the homepage" -msgstr "" - -#: common/models.py:1038 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1039 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1044 -msgid "Show low stock" -msgstr "" - -#: common/models.py:1045 -msgid "Show low stock items on the homepage" -msgstr "" - -#: common/models.py:1050 -msgid "Show depleted stock" -msgstr "" - -#: common/models.py:1051 -msgid "Show depleted stock items on the homepage" -msgstr "" - -#: common/models.py:1056 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1057 -msgid "Show stock items needed for builds on the homepage" -msgstr "" - -#: common/models.py:1062 -msgid "Show expired stock" -msgstr "" - -#: common/models.py:1063 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1068 -msgid "Show stale stock" -msgstr "" - -#: common/models.py:1069 -msgid "Show stale stock items on the homepage" -msgstr "" - -#: common/models.py:1074 -msgid "Show pending builds" -msgstr "" - -#: common/models.py:1075 -msgid "Show pending builds on the homepage" -msgstr "" - -#: common/models.py:1080 -msgid "Show overdue builds" -msgstr "" - -#: common/models.py:1081 -msgid "Show overdue builds on the homepage" -msgstr "" - -#: common/models.py:1086 -msgid "Show outstanding POs" -msgstr "" - -#: common/models.py:1087 -msgid "Show outstanding POs on the homepage" -msgstr "" - -#: common/models.py:1092 -msgid "Show overdue POs" -msgstr "" - -#: common/models.py:1093 -msgid "Show overdue POs on the homepage" -msgstr "" - -#: common/models.py:1098 -msgid "Show outstanding SOs" +#: common/models.py:1091 +msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" #: common/models.py:1099 -msgid "Show outstanding SOs on the homepage" +msgid "Enable URL integration" msgstr "" -#: common/models.py:1104 -msgid "Show overdue SOs" +#: common/models.py:1100 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1105 -msgid "Show overdue SOs on the homepage" +#: common/models.py:1107 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1111 -msgid "Inline label display" +#: common/models.py:1108 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1112 -msgid "Display PDF labels in the browser, instead of downloading as a file" +#: common/models.py:1115 +msgid "Enable app integration" msgstr "" -#: common/models.py:1118 -msgid "Inline report display" +#: common/models.py:1116 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1119 -msgid "Display PDF reports in the browser, instead of downloading as a file" +#: common/models.py:1123 +msgid "Enable schedule integration" msgstr "" -#: common/models.py:1125 -msgid "Search Preview Results" +#: common/models.py:1124 +msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1126 -msgid "Number of results to show in search preview window" +#: common/models.py:1131 +msgid "Enable event integration" msgstr "" #: common/models.py:1132 -msgid "Search Show Stock" +msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1133 -msgid "Display stock levels in search preview window" +#: common/models.py:1147 common/models.py:1449 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1139 -msgid "Hide Inactive Parts" +#: common/models.py:1178 +msgid "Show subscribed parts" msgstr "" -#: common/models.py:1140 -msgid "Hide inactive parts in search preview window" +#: common/models.py:1179 +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1146 -msgid "Show Quantity in Forms" +#: common/models.py:1185 +msgid "Show subscribed categories" msgstr "" -#: common/models.py:1147 -msgid "Display available part quantity in some forms" +#: common/models.py:1186 +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1153 -msgid "Escape Key Closes Forms" +#: common/models.py:1192 +msgid "Show latest parts" msgstr "" -#: common/models.py:1154 -msgid "Use the escape key to close modal forms" +#: common/models.py:1193 +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1160 -msgid "Fixed Navbar" +#: common/models.py:1199 +msgid "Recent Part Count" msgstr "" -#: common/models.py:1161 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1200 +msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1226 company/forms.py:43 -msgid "Price break quantity" +#: common/models.py:1206 +msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1233 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 -msgid "Price" +#: common/models.py:1207 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1213 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1214 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1220 +msgid "Recent Stock Count" +msgstr "" + +#: common/models.py:1221 +msgid "Number of recent stock items to display on index page" +msgstr "" + +#: common/models.py:1227 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1228 +msgid "Show low stock items on the homepage" msgstr "" #: common/models.py:1234 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1235 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1241 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1242 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1248 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1249 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1255 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1256 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:1262 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:1263 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:1269 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:1270 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:1276 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:1277 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:1283 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:1284 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:1290 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:1291 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:1297 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:1298 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:1304 +msgid "Enable email notifications" +msgstr "" + +#: common/models.py:1305 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: common/models.py:1311 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1312 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1318 +msgid "Inline label display" +msgstr "" + +#: common/models.py:1319 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:1325 +msgid "Inline report display" +msgstr "" + +#: common/models.py:1326 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:1332 +msgid "Search Parts" +msgstr "" + +#: common/models.py:1333 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:1339 +msgid "Search Categories" +msgstr "" + +#: common/models.py:1340 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:1346 +msgid "Search Stock" +msgstr "" + +#: common/models.py:1347 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:1353 +msgid "Search Locations" +msgstr "" + +#: common/models.py:1354 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:1360 +msgid "Search Companies" +msgstr "" + +#: common/models.py:1361 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:1367 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:1368 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:1374 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:1375 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:1381 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:1382 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:1388 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:1389 +msgid "Hide inactive parts in search preview window" +msgstr "" + +#: common/models.py:1395 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:1396 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:1402 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:1403 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:1409 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:1416 +msgid "Date Format" +msgstr "" + +#: common/models.py:1417 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:1431 part/templates/part/detail.html:39 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1432 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1490 company/forms.py:43 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 +msgid "Price" +msgstr "" + +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:24 order/views.py:289 -#: part/templates/part/bom_upload/upload_file.html:52 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:212 -#: part/views.py:858 +#: common/models.py:1655 common/models.py:1794 +msgid "Endpoint" +msgstr "" + +#: common/models.py:1656 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:1665 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 +#: templates/js/translated/table_filters.js:34 +#: templates/js/translated/table_filters.js:96 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 +msgid "Active" +msgstr "" + +#: common/models.py:1671 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:1685 +msgid "Token" +msgstr "" + +#: common/models.py:1686 +msgid "Token for access" +msgstr "" + +#: common/models.py:1693 +msgid "Secret" +msgstr "" + +#: common/models.py:1694 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:1761 +msgid "Message ID" +msgstr "" + +#: common/models.py:1762 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:1770 +msgid "Host" +msgstr "" + +#: common/models.py:1771 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:1778 +msgid "Header" +msgstr "" + +#: common/models.py:1779 +msgid "Header of this message" +msgstr "" + +#: common/models.py:1785 +msgid "Body" +msgstr "" + +#: common/models.py:1786 +msgid "Body of this message" +msgstr "" + +#: common/models.py:1795 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:1800 +msgid "Worked on" +msgstr "" + +#: common/models.py:1801 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 +#: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" -#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52 -#: order/views.py:290 part/templates/part/bom_upload/match_fields.html:52 +#: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:213 -#: part/views.py:859 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2182,19 +2544,15 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:517 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:47 -#: part/templates/part/bom_upload/match_fields.html:27 -#: part/templates/part/bom_upload/match_parts.html:19 -#: part/templates/part/bom_upload/upload_file.html:50 -#: part/templates/part/import_wizard/match_fields.html:27 +#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 #: part/templates/part/import_wizard/match_references.html:19 -#: part/templates/part/import_wizard/part_upload.html:45 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 msgid "Previous Step" msgstr "" #: company/forms.py:24 part/forms.py:46 +#: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" @@ -2211,6 +2569,7 @@ msgid "Description of the company" msgstr "" #: company/models.py:112 company/templates/company/company_base.html:97 +#: templates/InvenTree/settings/plugin_settings.html:55 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2236,7 +2595,7 @@ msgid "Contact phone number" msgstr "" #: company/models.py:125 company/templates/company/company_base.html:129 -#: templates/InvenTree/settings/user.html:47 +#: templates/InvenTree/settings/user.html:48 msgid "Email" msgstr "" @@ -2256,7 +2615,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:807 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2285,7 +2644,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2293,38 +2653,39 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:135 +#: company/models.py:320 company/models.py:535 stock/models.py:611 +#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" -#: company/models.py:324 company/models.py:539 order/views.py:912 +#: company/models.py:324 company/models.py:539 msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:374 +#: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 -#: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:517 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 -#: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:533 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2337,9 +2698,9 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:384 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 +#: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2349,8 +2710,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2358,10 +2719,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 +#: templates/InvenTree/settings/settings.html:325 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2374,27 +2735,28 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 -#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:391 +#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 +#: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2411,22 +2773,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2588 report/templates/report/inventree_po_report.html:93 -#: report/templates/report/inventree_so_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1748 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1748 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:507 stock/templates/stock/item_base.html:332 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2434,7 +2797,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1750 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2442,6 +2805,10 @@ msgstr "" msgid "Order multiple" msgstr "" +#: company/models.py:708 +msgid "last updated" +msgstr "" + #: company/serializers.py:70 msgid "Default currency used for this supplier" msgstr "" @@ -2452,12 +2819,12 @@ msgstr "" #: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322 +#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322 msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:121 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2493,11 +2860,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:567 -#: order/templates/order/sales_order_base.html:115 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:284 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 +#: stock/templates/stock/item_base.html:274 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2510,115 +2879,117 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:464 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" -#: company/templates/company/detail.html:15 +#: company/templates/company/detail.html:14 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:124 +#: templates/InvenTree/search.html:118 msgid "Supplier Parts" msgstr "" -#: company/templates/company/detail.html:19 +#: company/templates/company/detail.html:18 #: order/templates/order/order_wizard/select_parts.html:44 msgid "Create new supplier part" msgstr "" -#: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:333 +#: company/templates/company/detail.html:19 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:32 -#: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:167 part/templates/part/detail.html:342 -#: part/templates/part/detail.html:370 +#: company/templates/company/detail.html:31 +#: company/templates/company/detail.html:78 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:84 -#: part/templates/part/category.html:173 +#: company/templates/company/detail.html:36 +#: company/templates/company/detail.html:83 +#: part/templates/part/category.html:174 msgid "Order parts" msgstr "" +#: company/templates/company/detail.html:41 +#: company/templates/company/detail.html:88 +msgid "Delete parts" +msgstr "" + #: company/templates/company/detail.html:42 #: company/templates/company/detail.html:89 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:90 msgid "Delete Parts" msgstr "" -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109 +#: company/templates/company/detail.html:61 templates/InvenTree/search.html:103 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:65 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:107 +#: company/templates/company/detail.html:106 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:117 +#: company/templates/company/detail.html:116 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 -#: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 +#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:121 +#: company/templates/company/detail.html:120 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:121 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:143 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:20 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 -#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 -#: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 +#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 +#: templates/InvenTree/settings/sidebar.html:49 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:147 +#: company/templates/company/detail.html:146 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:148 +#: company/templates/company/detail.html:147 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:999 +#: company/templates/company/detail.html:167 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2626,15 +2997,15 @@ msgstr "" msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:413 +#: company/templates/company/detail.html:375 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" -#: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:414 +#: company/templates/company/detail.html:376 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2642,83 +3013,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184 -#: templates/navbar.html:44 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 -#: templates/js/translated/company.js:562 +#: company/templates/company/manufacturer_part.html:41 +#: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 -#: templates/js/translated/company.js:563 +#: company/templates/company/manufacturer_part.html:45 +#: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:194 templates/navbar.html:43 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:344 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 -#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 -#: users/models.py:204 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 +#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:175 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part.html:65 +#: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:869 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -2739,19 +3110,19 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:396 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 +#: stock/templates/stock/item_base.html:386 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part.html:38 -#: templates/js/translated/company.js:860 +#: templates/js/translated/company.js:863 msgid "Edit supplier part" msgstr "" #: company/templates/company/supplier_part.html:42 -#: templates/js/translated/company.js:861 +#: templates/js/translated/company.js:864 msgid "Delete supplier part" msgstr "" @@ -2761,13 +3132,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 +#: part/templates/part/detail.html:23 stock/templates/stock/location.html:167 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -2777,18 +3148,18 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:68 +#: part/templates/part/detail.html:81 msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 -#: company/templates/company/supplier_part.html:290 -#: part/templates/part/prices.html:271 part/views.py:1717 +#: company/templates/company/supplier_part.html:298 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -2796,11 +3167,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1779 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1765 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -2812,16 +3185,20 @@ msgstr "" msgid "Delete price break" msgstr "" +#: company/templates/company/supplier_part.html:273 +msgid "Last updated" +msgstr "" + #: company/templates/company/supplier_part_navbar.html:15 #: part/templates/part/part_sidebar.html:14 -#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 -#: templates/InvenTree/search.html:156 -#: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/InvenTree/search.html:150 +#: templates/InvenTree/settings/sidebar.html:43 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -2835,17 +3212,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:133 -#: stock/templates/stock/location.html:147 -#: stock/templates/stock/location.html:159 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 +#: stock/templates/stock/location.html:138 +#: stock/templates/stock/location.html:152 +#: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 -#: templates/stats.html:93 templates/stats.html:102 users/models.py:43 +#: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2857,8 +3236,8 @@ msgstr "" msgid "New Manufacturer" msgstr "" -#: company/views.py:61 templates/InvenTree/search.html:214 -#: templates/navbar.html:55 +#: company/views.py:61 templates/InvenTree/search.html:208 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -2866,7 +3245,7 @@ msgstr "" msgid "New Customer" msgstr "" -#: company/views.py:69 +#: company/views.py:69 templates/js/translated/search.js:159 msgid "Companies" msgstr "" @@ -2874,24 +3253,24 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:584 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:616 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:623 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:632 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" -#: label/api.py:57 report/api.py:203 +#: label/api.py:97 report/api.py:203 msgid "No valid objects provided to template" msgstr "" @@ -2911,7 +3290,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -2935,7 +3314,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -2948,7 +3327,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -2960,283 +3339,408 @@ msgstr "" msgid "Part query filters (comma-separated value of key=value pairs)" msgstr "" -#: order/forms.py:26 order/templates/order/order_base.html:52 +#: order/forms.py:24 order/templates/order/order_base.html:52 msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:60 +#: order/forms.py:35 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" -#: order/forms.py:48 order/forms.py:59 order/templates/order/order_base.html:47 +#: order/forms.py:46 order/forms.py:57 order/templates/order/order_base.html:47 #: order/templates/order/sales_order_base.html:60 msgid "Cancel order" msgstr "" -#: order/forms.py:70 -msgid "Ship order" -msgstr "" - -#: order/forms.py:98 -msgid "Enter stock item serial numbers" -msgstr "" - -#: order/forms.py:104 -msgid "Enter quantity of stock items" -msgstr "" - -#: order/models.py:161 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:163 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:171 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:178 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:183 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:250 order/models.py:557 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:255 order/models.py:572 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:264 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:669 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:267 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:274 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:279 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:280 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:285 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:286 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:292 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:321 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:431 -msgid "Quantity must be an integer" -msgstr "" - -#: order/models.py:435 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:568 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:574 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:574 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:579 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:589 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:633 -msgid "SalesOrder cannot be shipped as it is not currently pending" +#: order/models.py:686 +msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:730 +#: order/models.py:690 +msgid "Only a pending order can be marked as complete" +msgstr "" + +#: order/models.py:693 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:696 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:736 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:738 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: order/models.py:874 +msgid "Target shipping date for this line item" +msgstr "" + +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:769 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:346 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: report/templates/report/inventree_po_report.html:76 +#: stock/templates/stock/item_base.html:336 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:790 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:151 -#: order/templates/order/sales_order_base.html:155 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:798 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:353 -#: templates/js/translated/stock.js:1354 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:343 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:806 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:814 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:866 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:867 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:946 order/models.py:948 +#: order/models.py:1067 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1154 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1161 +msgid "Checked By" +msgstr "" + +#: order/models.py:1162 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1170 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1177 +msgid "Shipment notes" +msgstr "" + +#: order/models.py:1184 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1185 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1195 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1198 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:952 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:954 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:957 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:961 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:967 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:975 +#: order/models.py:1315 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1316 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:987 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 +msgid "Shipment" +msgstr "" + +#: order/models.py:1333 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:988 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:991 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:341 templates/js/translated/order.js:600 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:349 templates/js/translated/order.js:611 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:399 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" +#: order/serializers.py:812 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:862 order/serializers.py:965 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:884 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:978 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1002 order/serializers.py:1127 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1005 order/serializers.py:1130 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1057 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1067 +msgid "The following serial numbers are already allocated" +msgstr "" + #: order/templates/order/delete_attachment.html:5 #: stock/templates/stock/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" @@ -3266,11 +3770,12 @@ msgid "Receive items" msgstr "" #: order/templates/order/order_base.html:58 -#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:30 msgid "Receive Items" msgstr "" -#: order/templates/order/order_base.html:62 order/views.py:185 +#: order/templates/order/order_base.html:62 +#: order/templates/order/sales_order_base.html:67 order/views.py:181 msgid "Complete Order" msgstr "" @@ -3289,12 +3794,28 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:137 +#: order/templates/order/order_base.html:124 +#: order/templates/order/sales_order_base.html:128 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:130 +#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/sales_order_base.html:144 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:149 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:207 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3318,72 +3839,19 @@ msgstr "" msgid "After placing this purchase order, line items will no longer be editable." msgstr "" -#: order/templates/order/order_wizard/match_fields.html:9 -#: part/templates/part/bom_upload/match_fields.html:9 -#: part/templates/part/import_wizard/ajax_match_fields.html:9 -#: part/templates/part/import_wizard/match_fields.html:9 -msgid "Missing selections for the following required columns" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:20 -#: part/templates/part/bom_upload/match_fields.html:20 -#: part/templates/part/import_wizard/ajax_match_fields.html:20 -#: part/templates/part/import_wizard/match_fields.html:20 -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/bom_upload/match_fields.html:29 -#: part/templates/part/bom_upload/match_parts.html:21 -#: part/templates/part/import_wizard/match_fields.html:29 -#: part/templates/part/import_wizard/match_references.html:21 -msgid "Submit Selections" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:35 -#: part/templates/part/bom_upload/match_fields.html:35 -#: part/templates/part/import_wizard/ajax_match_fields.html:28 -#: part/templates/part/import_wizard/match_fields.html:35 -msgid "File Fields" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:42 -#: part/templates/part/bom_upload/match_fields.html:42 -#: part/templates/part/import_wizard/ajax_match_fields.html:35 -#: part/templates/part/import_wizard/match_fields.html:42 -msgid "Remove column" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:60 -#: part/templates/part/bom_upload/match_fields.html:60 -#: part/templates/part/import_wizard/ajax_match_fields.html:53 -#: part/templates/part/import_wizard/match_fields.html:60 -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/bom_upload/match_fields.html:71 -#: part/templates/part/bom_upload/match_parts.html:53 -#: 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/build.js:240 templates/js/translated/build.js:1251 -#: templates/js/translated/order.js:377 -msgid "Remove row" -msgstr "" - #: order/templates/order/order_wizard/match_parts.html:12 -#: part/templates/part/bom_upload/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:21 +#: 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_parts.html:28 -#: part/templates/part/bom_upload/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" @@ -3393,23 +3861,27 @@ msgstr "" msgid "Select Supplier Part" msgstr "" +#: 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_references.html:49 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/bom_upload/upload_file.html:21 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3452,7 +3924,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3472,7 +3945,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3481,30 +3954,45 @@ msgstr "" msgid "Received Stock" msgstr "" -#: order/templates/order/purchase_order_detail.html:18 +#: order/templates/order/purchase_order_detail.html:17 msgid "Purchase Order Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:27 -#: order/templates/order/purchase_order_detail.html:181 -#: order/templates/order/sales_order_detail.html:23 -#: order/templates/order/sales_order_detail.html:157 +#: order/templates/order/purchase_order_detail.html:26 +#: order/templates/order/purchase_order_detail.html:182 +#: order/templates/order/sales_order_detail.html:22 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" -#: order/templates/order/purchase_order_detail.html:30 +#: order/templates/order/purchase_order_detail.html:29 msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:76 -#: order/templates/order/sales_order_detail.html:68 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3519,8 +4007,8 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:67 order/views.py:222 -msgid "Ship Order" +#: order/templates/order/sales_order_base.html:235 +msgid "Complete Sales Order" msgstr "" #: order/templates/order/sales_order_base.html:102 @@ -3528,17 +4016,21 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1086 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:195 +#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/sales_order_detail.html:100 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" #: order/templates/order/sales_order_cancel.html:8 -#: order/templates/order/sales_order_ship.html:9 -#: part/templates/part/bom_duplicate.html:12 #: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" msgstr "" @@ -3547,677 +4039,702 @@ msgstr "" msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: order/templates/order/sales_order_detail.html:18 +#: order/templates/order/sales_order_detail.html:17 msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_ship.html:10 -msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted." +#: order/templates/order/sales_order_detail.html:66 +#: order/templates/order/so_sidebar.html:8 +msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_ship.html:12 -msgid "Ensure that the order allocation is correct before shipping the order." +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 +msgid "Actions" msgstr "" -#: order/templates/order/sales_order_ship.html:18 -msgid "Some line items in this order have been over-allocated" +#: order/templates/order/sales_order_detail.html:79 +msgid "New Shipment" msgstr "" -#: order/templates/order/sales_order_ship.html:20 -msgid "Ensure that this is correct before shipping the order." -msgstr "" - -#: order/templates/order/sales_order_ship.html:27 -msgid "Shipping this order means that the order will no longer be editable." -msgstr "" - -#: order/templates/order/so_allocate_by_serial.html:9 -msgid "Allocate stock items by serial number" -msgstr "" - -#: order/views.py:103 +#: order/views.py:99 msgid "Cancel Order" msgstr "" -#: order/views.py:112 order/views.py:138 +#: order/views.py:108 order/views.py:134 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:115 order/views.py:141 +#: order/views.py:111 order/views.py:137 msgid "Order cannot be cancelled" msgstr "" -#: order/views.py:129 +#: order/views.py:125 msgid "Cancel sales order" msgstr "" -#: order/views.py:155 +#: order/views.py:151 msgid "Issue Order" msgstr "" -#: order/views.py:164 +#: order/views.py:160 msgid "Confirm order placement" msgstr "" -#: order/views.py:174 +#: order/views.py:170 msgid "Purchase order issued" msgstr "" -#: order/views.py:201 +#: order/views.py:197 msgid "Confirm order completion" msgstr "" -#: order/views.py:212 +#: order/views.py:208 msgid "Purchase order completed" msgstr "" -#: order/views.py:238 -msgid "Confirm order shipment" -msgstr "" - -#: order/views.py:244 -msgid "Could not ship order" -msgstr "" - -#: order/views.py:291 +#: order/views.py:245 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:535 +#: order/views.py:489 msgid "Update prices" msgstr "" -#: order/views.py:793 +#: order/views.py:747 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:846 -msgid "Allocate Serial Numbers" -msgstr "" - -#: order/views.py:891 -#, python-brace-format -msgid "Allocated {n} items" -msgstr "" - -#: order/views.py:907 -msgid "Select line item" -msgstr "" - -#: order/views.py:938 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - -#: order/views.py:948 -#, python-brace-format -msgid "{serial} is not in stock" -msgstr "" - -#: order/views.py:956 -#, python-brace-format -msgid "{serial} already allocated to an order" -msgstr "" - -#: order/views.py:1072 +#: order/views.py:858 msgid "Sales order not found" msgstr "" -#: order/views.py:1078 +#: order/views.py:864 msgid "Price not found" msgstr "" -#: order/views.py:1081 +#: order/views.py:867 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1086 +#: order/views.py:872 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:758 +#: part/api.py:509 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:529 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:547 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:579 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:659 +msgid "Valid" +msgstr "" + +#: part/api.py:660 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:665 +msgid "This option must be selected" +msgstr "" + +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:762 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:777 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:808 part/api.py:812 part/api.py:827 part/api.py:831 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:104 part/templates/part/part_base.html:331 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:185 +#: part/bom.py:126 templates/email/low_stock_notification.html:17 +msgid "Total Stock" +msgstr "" + +#: part/bom.py:127 part/templates/part/part_base.html:189 msgid "Available Stock" msgstr "" -#: part/forms.py:63 -msgid "File Format" +#: part/bom.py:128 part/templates/part/part_base.html:207 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 +msgid "On Order" msgstr "" -#: part/forms.py:63 -msgid "Select output file format" -msgstr "" - -#: part/forms.py:65 -msgid "Cascading" -msgstr "" - -#: part/forms.py:65 -msgid "Download cascading / multi-level BOM" -msgstr "" - -#: part/forms.py:67 -msgid "Levels" -msgstr "" - -#: part/forms.py:67 -msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" - -#: part/forms.py:69 -msgid "Include Parameter Data" -msgstr "" - -#: part/forms.py:69 -msgid "Include part parameters data in exported BOM" -msgstr "" - -#: part/forms.py:71 -msgid "Include Stock Data" -msgstr "" - -#: part/forms.py:71 -msgid "Include part stock data in exported BOM" -msgstr "" - -#: part/forms.py:73 -msgid "Include Manufacturer Data" -msgstr "" - -#: part/forms.py:73 -msgid "Include part manufacturer data in exported BOM" -msgstr "" - -#: part/forms.py:75 -msgid "Include Supplier Data" -msgstr "" - -#: part/forms.py:75 -msgid "Include part supplier data in exported BOM" -msgstr "" - -#: part/forms.py:96 part/models.py:2427 -msgid "Parent Part" -msgstr "" - -#: part/forms.py:97 part/templates/part/bom_duplicate.html:7 -msgid "Select parent part to copy BOM from" -msgstr "" - -#: part/forms.py:103 -msgid "Clear existing BOM items" -msgstr "" - -#: part/forms.py:109 -msgid "Confirm BOM duplication" -msgstr "" - -#: part/forms.py:127 -msgid "validate" -msgstr "" - -#: part/forms.py:127 -msgid "Confirm that the BOM is correct" -msgstr "" - -#: part/forms.py:163 +#: part/forms.py:84 msgid "Select part category" msgstr "" -#: part/forms.py:200 +#: part/forms.py:121 msgid "Add parameter template to same level categories" msgstr "" -#: part/forms.py:204 +#: part/forms.py:125 msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:224 +#: part/forms.py:145 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:85 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:85 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:124 -#: templates/InvenTree/search.html:101 templates/stats.html:84 +#: part/models.py:127 part/templates/part/category.html:128 +#: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:129 -#: part/templates/part/category.html:149 +#: part/models.py:368 part/templates/part/cat_link.html:3 +#: part/templates/part/category.html:17 part/templates/part/category.html:133 +#: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 -#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 -#: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 -#: templates/stats.html:80 templates/stats.html:89 users/models.py:41 +#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 +#: templates/InvenTree/settings/sidebar.html:39 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:450 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:502 part/models.py:514 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:611 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:615 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:620 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:715 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:740 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:747 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:748 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:758 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:759 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:765 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:82 -#: part/templates/part/part_base.html:302 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:771 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/part_base.html:265 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/InvenTree/notifications/notifications.html:65 +#: templates/InvenTree/settings/settings.html:224 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:779 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:785 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:791 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:554 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:814 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/part_base.html:340 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:862 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:869 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:870 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:196 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:876 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:883 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:889 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:895 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:901 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:906 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:911 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:915 templates/js/translated/table_filters.js:34 -#: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:368 -msgid "Active" -msgstr "" - -#: part/models.py:916 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:921 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:926 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:929 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:929 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:932 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:934 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:938 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1750 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2273 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2290 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2311 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2316 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2317 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2323 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2329 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2335 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2346 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2382 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2390 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2397 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2429 part/models.py:2478 part/models.py:2479 -#: templates/InvenTree/settings/settings.html:158 +#: part/models.py:2596 +msgid "Parent Part" +msgstr "" + +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 +#: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2431 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2431 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2483 templates/InvenTree/settings/settings.html:167 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2484 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2561 +#: part/models.py:2687 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 +msgid "Part ID" +msgstr "" + +#: part/models.py:2691 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:2694 +msgid "Part Name" +msgstr "" + +#: part/models.py:2698 +msgid "Part IPN" +msgstr "" + +#: part/models.py:2699 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:2702 +msgid "Level" +msgstr "" + +#: part/models.py:2703 +msgid "BOM level" +msgstr "" + +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2569 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2570 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2576 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2578 templates/js/translated/bom.js:454 -#: templates/js/translated/bom.js:528 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2578 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2581 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2582 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2585 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2588 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2590 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2590 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2594 templates/js/translated/bom.js:545 -#: templates/js/translated/bom.js:552 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2595 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2600 templates/js/translated/bom.js:537 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2601 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2695 part/models.py:2697 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2826 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2848 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2860 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:2868 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:2879 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:2883 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:2883 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:2915 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/tasks.py:53 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:934 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:935 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:940 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:941 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:946 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:947 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:952 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:953 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:997 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:998 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1025 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1068 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1071 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1074 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1083 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1091 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1110 +msgid "At least one BOM item is required" +msgstr "" + +#: part/tasks.py:18 msgid "Low stock notification" msgstr "" +#: part/tasks.py:19 +#, 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 "" @@ -4237,7 +4754,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4245,184 +4762,144 @@ msgstr "" msgid "Delete Items" msgstr "" -#: part/templates/part/bom_duplicate.html:13 -msgid "This part already has a Bill of Materials" -msgstr "" - -#: part/templates/part/bom_upload/match_parts.html:29 -msgid "Select Part" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:8 -msgid "Return to BOM" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:13 -msgid "Upload Bill of Materials" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:33 -msgid "Requirements for BOM upload" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:35 -msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:35 -msgid "BOM Upload Template" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:36 -msgid "Each part must already exist in the database" -msgstr "" - -#: part/templates/part/bom_validate.html:6 -#, python-format -msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s" -msgstr "" - -#: part/templates/part/bom_validate.html:9 -msgid "This will validate each line in the BOM." -msgstr "" - -#: part/templates/part/category.html:24 part/templates/part/category.html:28 +#: part/templates/part/category.html:28 part/templates/part/category.html:32 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:32 +#: part/templates/part/category.html:36 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:38 +#: part/templates/part/category.html:42 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:43 +#: part/templates/part/category.html:47 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:44 +#: part/templates/part/category.html:48 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:52 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:49 +#: part/templates/part/category.html:53 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:57 +#: part/templates/part/category.html:61 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:58 +#: part/templates/part/category.html:62 msgid "New Category" msgstr "" -#: part/templates/part/category.html:76 part/templates/part/category.html:89 +#: part/templates/part/category.html:80 part/templates/part/category.html:93 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:90 +#: part/templates/part/category.html:94 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:110 part/templates/part/category.html:201 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:115 +#: part/templates/part/category.html:119 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:152 -msgid "Export Part Data" -msgstr "" - -#: part/templates/part/category.html:153 part/templates/part/category.html:177 -msgid "Export" -msgstr "" - -#: part/templates/part/category.html:156 +#: part/templates/part/category.html:157 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:158 templates/js/translated/bom.js:365 msgid "New Part" msgstr "" -#: part/templates/part/category.html:171 +#: part/templates/part/category.html:172 msgid "Set category" msgstr "" -#: part/templates/part/category.html:171 +#: part/templates/part/category.html:172 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:175 +#: part/templates/part/category.html:176 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:177 +#: part/templates/part/category.html:178 +msgid "Export" +msgstr "" + +#: part/templates/part/category.html:178 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:191 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:268 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:295 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category.html:332 +msgid "Create another part after this one" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category.html:333 +msgid "Part created successfully" +msgstr "" + +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4446,161 +4923,187 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:17 +#: part/templates/part/detail.html:20 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:29 -#, python-format -msgid "Showing stock for all variants of %(full_name)s" -msgstr "" - -#: part/templates/part/detail.html:39 +#: part/templates/part/detail.html:52 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:44 +#: part/templates/part/detail.html:57 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:101 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:142 +#: part/templates/part/detail.html:136 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:147 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:174 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:238 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:242 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:244 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:256 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:258 part/views.py:755 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:263 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:264 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:277 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:294 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:319 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:329 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:372 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:553 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:554 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:605 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:657 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:665 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:762 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:819 -msgid "Edit Part Notes" -msgstr "" - -#: part/templates/part/detail.html:932 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:944 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:956 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1045 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -4608,7 +5111,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -4625,208 +5128,206 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:28 -#: stock/templates/stock/location.html:29 +#: stock/templates/stock/item_base.html:35 +#: stock/templates/stock/location.html:34 msgid "Barcode actions" msgstr "" -#: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:32 -#: stock/templates/stock/location.html:31 templates/qr_button.html:1 +#: part/templates/part/part_base.html:46 +#: stock/templates/stock/item_base.html:39 +#: stock/templates/stock/location.html:36 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:32 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:57 +#: stock/templates/stock/location.html:38 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:51 +#: part/templates/part/part_base.html:55 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:103 -#: stock/templates/stock/location.html:40 +#: part/templates/part/part_base.html:60 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:47 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:63 +#: part/templates/part/part_base.html:67 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:69 +#: part/templates/part/part_base.html:73 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:84 +#: part/templates/part/part_base.html:88 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:87 +#: part/templates/part/part_base.html:91 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:90 +#: part/templates/part/part_base.html:94 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:97 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:112 +#: part/templates/part/part_base.html:116 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:116 +#: part/templates/part/part_base.html:120 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:120 +#: part/templates/part/part_base.html:124 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:124 +#: part/templates/part/part_base.html:128 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:128 +#: part/templates/part/part_base.html:132 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:132 +#: part/templates/part/part_base.html:136 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:138 -#: part/templates/part/part_base.html:146 +#: part/templates/part/part_base.html:142 +#: part/templates/part/part_base.html:150 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:139 -#: templates/js/translated/company.js:505 -#: templates/js/translated/company.js:762 -#: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: part/templates/part/part_base.html:143 +#: templates/js/translated/company.js:508 +#: templates/js/translated/company.js:765 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:156 -#: part/templates/part/part_base.html:572 +#: part/templates/part/part_base.html:160 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:173 +#: part/templates/part/part_base.html:177 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1546 -#: templates/js/translated/table_filters.js:188 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 +#: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1054 -msgid "On Order" -msgstr "" - -#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:217 -msgid "Required for Sales Orders" +#: part/templates/part/part_base.html:215 +msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -msgid "Allocated to Orders" +msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:295 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:442 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:320 +#: stock/templates/stock/item_base.html:166 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:485 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:566 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:520 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" @@ -4834,11 +5335,15 @@ msgstr "" msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:25 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:41 +#: part/templates/part/part_sidebar.html:46 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -4884,69 +5389,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1788 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -4954,9 +5459,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -4964,6 +5468,43 @@ msgstr "" 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 "" @@ -4973,213 +5514,290 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:92 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:142 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:214 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:502 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:561 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:663 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:689 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:692 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:704 -msgid "Duplicate BOM" -msgstr "" - -#: part/views.py:734 -msgid "Confirm duplication of BOM from parent" -msgstr "" - -#: part/views.py:776 -msgid "Confirm that the BOM is valid" -msgstr "" - #: part/views.py:787 -msgid "Validated Bill of Materials" -msgstr "" - -#: part/views.py:860 -msgid "Match Parts" -msgstr "" - -#: part/views.py:1196 -msgid "Export Bill of Materials" -msgstr "" - -#: part/views.py:1248 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1255 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:1264 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:1413 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1423 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1430 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1527 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1533 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1542 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1643 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1699 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1721 -msgid "Added new price break" +#: plugin/apps.py:52 +msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" -#: part/views.py:1797 -msgid "Edit Internal Price Break" +#: plugin/events.py:225 +msgid "Label printing failed" msgstr "" -#: part/views.py:1805 -msgid "Delete Internal Price Break" +#: plugin/integration.py:146 +msgid "No author found" msgstr "" -#: report/api.py:234 report/api.py:278 +#: plugin/integration.py:160 +msgid "No date found" +msgstr "" + +#: plugin/models.py:26 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:27 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:32 +msgid "Key" +msgstr "" + +#: plugin/models.py:33 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:41 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:47 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:182 +msgid "Plugin" +msgstr "" + +#: plugin/samples/integration/sample.py:42 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:43 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:49 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:50 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:55 +msgid "Package Name" +msgstr "" + +#: plugin/serializers.py:56 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:59 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:60 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:75 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:77 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5192,11 +5810,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:149 -#: templates/js/translated/build.js:233 templates/js/translated/build.js:637 -#: templates/js/translated/build.js:1013 -#: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5205,17 +5824,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin_settings.html:38 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5228,545 +5849,637 @@ msgid "Fail" msgstr "" #: report/templates/report/inventree_test_report_base.html:123 -#: stock/templates/stock/stock_sidebar.html:12 +#: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:422 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:179 -#: templates/js/translated/stock.js:1276 +#: stock/api.py:552 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:577 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 +#: stock/templates/stock/item_base.html:193 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" -#: stock/forms.py:92 stock/forms.py:266 +#: stock/forms.py:75 stock/forms.py:199 msgid "Expiration date for this stock item" msgstr "" -#: stock/forms.py:95 +#: stock/forms.py:78 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: stock/forms.py:150 +#: stock/forms.py:133 msgid "Destination for serialized stock (by default, will remain in current location)" msgstr "" -#: stock/forms.py:152 +#: stock/forms.py:135 msgid "Serial numbers" msgstr "" -#: stock/forms.py:152 +#: stock/forms.py:135 msgid "Unique serial numbers (must match quantity)" msgstr "" -#: stock/forms.py:154 stock/forms.py:238 +#: stock/forms.py:137 stock/forms.py:171 msgid "Add transaction note (optional)" msgstr "" -#: stock/forms.py:194 -msgid "Stock item to install" -msgstr "" - -#: stock/forms.py:224 -msgid "Must not exceed available quantity" -msgstr "" - -#: stock/forms.py:236 +#: stock/forms.py:169 msgid "Destination location for uninstalled items" msgstr "" -#: stock/forms.py:240 +#: stock/forms.py:173 msgid "Confirm uninstall" msgstr "" -#: stock/forms.py:240 +#: stock/forms.py:173 msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:410 +#: stock/models.py:93 stock/models.py:754 +#: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:292 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 -msgid "Scheduled for deletion" +#: stock/models.py:782 +msgid "Converted to part" msgstr "" -#: stock/models.py:631 -msgid "This StockItem will be deleted by the background worker" -msgstr "" - -#: stock/models.py:1094 +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1398 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1401 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1404 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1407 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1410 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1413 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1420 stock/serializers.py:832 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1424 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1428 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1432 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:2209 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:173 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 -msgid "Purchase currency of this stock item" -msgstr "" - -#: stock/serializers.py:287 +#: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:309 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:315 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:333 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:346 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 -msgid "StockItem primary key value" +#: stock/serializers.py:363 stock/views.py:1019 +msgid "Serial numbers already exist" msgstr "" -#: stock/serializers.py:584 -msgid "Stock transaction notes" +#: stock/serializers.py:405 +msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:421 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:428 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:646 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:650 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:654 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:684 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:690 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:698 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:708 stock/serializers.py:938 msgid "A list of stock items must be provided" msgstr "" -#: stock/templates/stock/item.html:18 +#: stock/serializers.py:796 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:801 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:802 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:807 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:808 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:818 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:900 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:928 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:29 +#: stock/templates/stock/item.html:22 msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:48 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:55 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:64 -#: stock/templates/stock/stock_sidebar.html:8 +#: stock/templates/stock/item.html:91 +#: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:72 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:76 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:133 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:137 stock/views.py:515 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:279 stock/templates/stock/item.html:304 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item.html:324 -msgid "Edit Test Result" -msgstr "" - -#: stock/templates/stock/item.html:338 -msgid "Delete Test Result" -msgstr "" - -#: stock/templates/stock/item_base.html:35 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: stock/templates/stock/item_base.html:42 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:37 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:21 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:46 +#: stock/templates/stock/item_base.html:54 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:65 +#: stock/templates/stock/item_base.html:70 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:69 -#: stock/templates/stock/location.html:47 templates/stock_table.html:50 +#: stock/templates/stock/item_base.html:74 +#: stock/templates/stock/location.html:54 templates/stock_table.html:47 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:77 templates/stock_table.html:45 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:80 templates/stock_table.html:46 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:78 +#: stock/templates/stock/item_base.html:83 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:82 -#: stock/templates/stock/location.html:53 +#: stock/templates/stock/item_base.html:87 +#: stock/templates/stock/location.html:60 templates/stock_table.html:48 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:85 +#: stock/templates/stock/item_base.html:90 templates/stock_table.html:51 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:93 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:91 +#: stock/templates/stock/item_base.html:96 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:91 +#: stock/templates/stock/item_base.html:96 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:100 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:100 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:108 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:113 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:152 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:158 +#: stock/templates/stock/item_base.html:161 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:183 +#: stock/templates/stock/item_base.html:170 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:183 -#: templates/js/translated/table_filters.js:247 +#: stock/templates/stock/item_base.html:197 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:185 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:185 -#: templates/js/translated/table_filters.js:253 +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:192 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:206 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:197 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:201 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:219 -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:226 +#: stock/templates/stock/item_base.html:224 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:227 +#: stock/templates/stock/item_base.html:225 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:238 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:248 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +#: stock/templates/stock/item_base.html:246 +msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:256 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +#: stock/templates/stock/item_base.html:254 +msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:260 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:266 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:270 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:1035 +#: stock/templates/stock/item_base.html:301 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:308 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:360 +#: stock/templates/stock/item_base.html:350 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:378 +#: stock/templates/stock/item_base.html:368 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:403 +#: stock/templates/stock/item_base.html:393 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:493 +#: stock/templates/stock/item_base.html:411 +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:412 +#: stock/templates/stock/location.html:118 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:486 msgid "Edit Stock Status" msgstr "" @@ -5779,39 +6492,6 @@ msgstr "" msgid "This will remove %(qty)s units of %(full_name)s from stock." msgstr "" -#: stock/templates/stock/item_install.html:8 -msgid "Install another Stock Item into this item." -msgstr "" - -#: stock/templates/stock/item_install.html:11 -#: stock/templates/stock/item_install.html:24 -msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" - -#: stock/templates/stock/item_install.html:14 -msgid "The Stock Item links to a Part which is in the BOM for this Stock Item" -msgstr "" - -#: stock/templates/stock/item_install.html:15 -msgid "The Stock Item is currently in stock" -msgstr "" - -#: stock/templates/stock/item_install.html:16 -msgid "The Stock Item is serialized and does not belong to another item" -msgstr "" - -#: stock/templates/stock/item_install.html:21 -msgid "Install this Stock Item in another stock item." -msgstr "" - -#: stock/templates/stock/item_install.html:27 -msgid "The part associated to this Stock Item belongs to another part's BOM" -msgstr "" - -#: stock/templates/stock/item_install.html:28 -msgid "This Stock Item is serialized and does not belong to another item" -msgstr "" - #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." msgstr "" @@ -5820,66 +6500,90 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:33 +#: stock/templates/stock/location.html:40 msgid "Check-in Items" msgstr "" -#: stock/templates/stock/location.html:61 +#: stock/templates/stock/location.html:68 msgid "Location actions" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:70 msgid "Edit location" msgstr "" -#: stock/templates/stock/location.html:65 +#: stock/templates/stock/location.html:72 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:75 +#: stock/templates/stock/location.html:81 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:76 +#: stock/templates/stock/location.html:82 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:95 -#: stock/templates/stock/location.html:101 +#: stock/templates/stock/location.html:100 +#: stock/templates/stock/location.html:106 msgid "Location Path" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:107 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:115 +#: stock/templates/stock/location.html:113 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:117 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:128 -#: stock/templates/stock/location.html:175 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:180 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 -#: templates/stats.html:97 users/models.py:42 +#: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:182 templates/stock_table.html:30 -msgid "Printing Actions" -msgstr "" - -#: stock/templates/stock/location.html:186 templates/stock_table.html:34 -msgid "Print labels" -msgstr "" - -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -5888,7 +6592,11 @@ msgstr "" msgid "Stock Tracking" msgstr "" -#: stock/templates/stock/stock_sidebar.html:16 +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" msgstr "" @@ -5896,7 +6604,7 @@ msgstr "" msgid "The following stock items will be uninstalled" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:912 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:631 msgid "Convert Stock Item" msgstr "" @@ -5917,119 +6625,135 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:162 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:269 stock/views.py:891 stock/views.py:1017 -#: stock/views.py:1299 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" -#: stock/views.py:284 +#: stock/views.py:274 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:303 -msgid "Assign to Customer" -msgstr "" - -#: stock/views.py:312 -msgid "Customer must be specified" -msgstr "" - -#: stock/views.py:336 +#: stock/views.py:293 msgid "Return to Stock" msgstr "" -#: stock/views.py:345 +#: stock/views.py:302 msgid "Specify a valid location" msgstr "" -#: stock/views.py:356 +#: stock/views.py:313 msgid "Stock item returned from customer" msgstr "" -#: stock/views.py:367 +#: stock/views.py:324 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:384 +#: stock/views.py:341 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:489 +#: stock/views.py:342 +msgid "Check the confirmation box" +msgstr "" + +#: stock/views.py:357 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:663 +#: stock/views.py:382 msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:771 +#: stock/views.py:490 msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:943 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:1044 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1268 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1368 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1381 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1392 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1399 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1408 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: 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:36 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:42 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + #: templates/InvenTree/index.html:7 msgid "Index" msgstr "" @@ -6058,6 +6782,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6090,12 +6818,72 @@ msgstr "" msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/search.html:8 -msgid "Search Results" +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" msgstr "" -#: templates/InvenTree/search.html:22 -msgid "Enter a search query" +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +msgid "Refresh Notification History" +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/inbox.html:16 +#: templates/InvenTree/notifications/inbox.html:17 +msgid "Refresh Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:51 +#: templates/InvenTree/settings/settings.html:314 +msgid "ID" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:57 +msgid "Age" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:88 +#: templates/InvenTree/settings/plugin.html:133 +msgid "Message" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:94 +#: templates/InvenTree/notifications/notifications.html:150 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:116 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:140 +msgid "No notification history found" +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 @@ -6139,30 +6927,163 @@ msgid "Server Settings" msgstr "" #: templates/InvenTree/settings/login.html:9 -#: templates/InvenTree/settings/sidebar.html:28 +#: templates/InvenTree/settings/sidebar.html:31 msgid "Login Settings" msgstr "" -#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5 +#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5 msgid "Signup" msgstr "" +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:43 +#: templates/InvenTree/settings/part.html:44 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:47 +#: templates/InvenTree/settings/part.html:48 msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:62 msgid "Part Parameter Templates" msgstr "" +#: templates/InvenTree/settings/plugin.html:10 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:16 +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:34 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:39 +#: templates/js/translated/plugin.js:15 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 +#: users/models.py:39 +msgid "Admin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin_settings.html:28 +msgid "Author" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:52 +#: templates/InvenTree/settings/plugin_settings.html:43 +msgid "Version" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 +msgid "Inactive plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:122 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:131 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:10 +#, python-format +msgid "Plugin details for %(name)s" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:17 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:48 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:62 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:71 +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:77 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:83 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:86 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:88 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:94 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:104 +#: templates/about.html:47 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +#: templates/about.html:40 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:112 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +msgid "Sign Status" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:122 +msgid "Sign Key" +msgstr "" + #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -6172,94 +7093,90 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:37 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:42 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:11 templates/navbar.html:93 -msgid "Settings" +#: templates/InvenTree/settings/settings.html:116 +msgid "Edit Plugin Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:65 +#: templates/InvenTree/settings/settings.html:118 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:65 +#: templates/InvenTree/settings/settings.html:120 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:148 +#: templates/InvenTree/settings/settings.html:209 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:170 -#: templates/InvenTree/settings/settings.html:269 +#: templates/InvenTree/settings/settings.html:231 +#: templates/InvenTree/settings/settings.html:330 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:171 -#: templates/InvenTree/settings/settings.html:270 +#: templates/InvenTree/settings/settings.html:232 +#: templates/InvenTree/settings/settings.html:331 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:249 +#: templates/InvenTree/settings/settings.html:310 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:253 -msgid "ID" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:8 +#: templates/InvenTree/settings/sidebar.html:9 #: templates/InvenTree/settings/user.html:12 msgid "Account Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:10 +#: templates/InvenTree/settings/sidebar.html:11 #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:12 +#: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" msgstr "" -#: templates/InvenTree/settings/sidebar.html:14 +#: templates/InvenTree/settings/sidebar.html:15 #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:16 +#: templates/InvenTree/settings/sidebar.html:19 msgid "Label Printing" msgstr "" -#: templates/InvenTree/settings/sidebar.html:18 -#: templates/InvenTree/settings/sidebar.html:34 +#: templates/InvenTree/settings/sidebar.html:21 +#: templates/InvenTree/settings/sidebar.html:37 msgid "Reporting" msgstr "" -#: templates/InvenTree/settings/sidebar.html:23 +#: templates/InvenTree/settings/sidebar.html:26 msgid "Global Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:26 +#: templates/InvenTree/settings/sidebar.html:29 msgid "Server Configuration" msgstr "" -#: templates/InvenTree/settings/sidebar.html:32 +#: templates/InvenTree/settings/sidebar.html:35 msgid "Currencies" msgstr "" -#: templates/InvenTree/settings/sidebar.html:38 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Categories" msgstr "" @@ -6277,8 +7194,9 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 -#: templates/js/translated/helpers.js:26 +#: templates/InvenTree/settings/user.html:23 +#: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 msgid "Edit" msgstr "" @@ -6294,7 +7212,7 @@ msgstr "" msgid "Last Name" msgstr "" -#: templates/InvenTree/settings/user.html:55 +#: templates/InvenTree/settings/user.html:54 msgid "The following email addresses are associated with your account:" msgstr "" @@ -6319,148 +7237,177 @@ msgid "Re-send Verification" msgstr "" #: templates/InvenTree/settings/user.html:87 -#: templates/InvenTree/settings/user.html:154 +#: templates/InvenTree/settings/user.html:149 msgid "Remove" msgstr "" -#: templates/InvenTree/settings/user.html:94 +#: templates/InvenTree/settings/user.html:95 +#: templates/InvenTree/settings/user.html:201 msgid "Warning:" msgstr "" -#: templates/InvenTree/settings/user.html:95 +#: templates/InvenTree/settings/user.html:96 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:102 +#: templates/InvenTree/settings/user.html:104 msgid "Add Email Address" msgstr "" -#: templates/InvenTree/settings/user.html:112 -msgid "Enter e-mail address" -msgstr "" - -#: templates/InvenTree/settings/user.html:114 +#: templates/InvenTree/settings/user.html:109 msgid "Add Email" msgstr "" -#: templates/InvenTree/settings/user.html:124 +#: templates/InvenTree/settings/user.html:117 msgid "Social Accounts" msgstr "" -#: templates/InvenTree/settings/user.html:129 +#: templates/InvenTree/settings/user.html:122 msgid "You can sign in to your account using any of the following third party accounts:" msgstr "" -#: templates/InvenTree/settings/user.html:163 -msgid "There are no social network accounts connected to your InvenTree account" +#: templates/InvenTree/settings/user.html:157 +msgid "You currently have no social network accounts connected to this account." msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:162 msgid "Add a 3rd Party Account" msgstr "" -#: templates/InvenTree/settings/user.html:179 -msgid "Active Sessions" +#: templates/InvenTree/settings/user.html:172 +msgid "Multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:185 -msgid "Log out active sessions (except this one)" +#: templates/InvenTree/settings/user.html:177 +msgid "You have these factors available:" msgstr "" -#: templates/InvenTree/settings/user.html:186 -msgid "Log Out Active Sessions" +#: templates/InvenTree/settings/user.html:187 +msgid "TOTP" msgstr "" -#: templates/InvenTree/settings/user.html:195 -msgid "unknown on unknown" -msgstr "" - -#: templates/InvenTree/settings/user.html:196 -msgid "unknown" -msgstr "" - -#: templates/InvenTree/settings/user.html:200 -msgid "IP Address" -msgstr "" - -#: templates/InvenTree/settings/user.html:201 -msgid "Device" +#: templates/InvenTree/settings/user.html:193 +msgid "Static" msgstr "" #: templates/InvenTree/settings/user.html:202 +msgid "You currently do not have any factors set up." +msgstr "" + +#: templates/InvenTree/settings/user.html:209 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:210 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:212 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:220 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:226 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:227 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:236 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:237 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:241 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:242 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:243 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:211 +#: templates/InvenTree/settings/user.html:252 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:213 +#: templates/InvenTree/settings/user.html:254 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:224 +#: templates/InvenTree/settings/user.html:266 msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:25 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:35 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:46 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:54 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:63 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:79 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:81 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:88 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:91 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:93 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:95 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:95 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:101 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -6471,15 +7418,20 @@ msgstr "" msgid "Label Settings" msgstr "" +#: templates/InvenTree/settings/user_notifications.html:8 +msgid "Notification Settings" +msgstr "" + #: templates/about.html:10 msgid "InvenTree Version Information" msgstr "" #: templates/about.html:11 templates/about.html:105 -#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661 -#: templates/js/translated/modals.js:964 templates/modals.html:15 -#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620 +#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584 +#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986 +#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39 +#: templates/modals.html:50 msgid "Close" msgstr "" @@ -6499,14 +7451,6 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:40 -msgid "Commit Hash" -msgstr "" - -#: templates/about.html:47 -msgid "Commit Date" -msgstr "" - #: templates/about.html:53 msgid "InvenTree Documentation" msgstr "" @@ -6563,7 +7507,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -6662,6 +7598,71 @@ msgstr "" msgid "View in administration panel" msgstr "" +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:12 +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 tokens. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:27 +msgid "Generate backup tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:31 +#: templates/allauth_2fa/setup.html:40 +msgid "Back to settings" +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:14 +msgid "Disable Two-Factor" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:35 +msgid "Verify" +msgstr "" + #: templates/attachment_button.html:4 templates/js/translated/attachment.js:54 msgid "Add Link" msgstr "" @@ -6670,15 +7671,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:99 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:102 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:102 msgid "Contact your system administrator for further information" msgstr "" @@ -6700,14 +7701,16 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:991 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1129 -#: templates/js/translated/build.js:1749 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 +#: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -6716,23 +7719,10 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - -#: templates/email/low_stock_notification.html:7 -#, python-format -msgid " The available stock for %(part)s has fallen below the configured minimum level" -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:17 -msgid "Total Stock" -msgstr "" - #: templates/email/low_stock_notification.html:19 msgid "Minimum Quantity" msgstr "" @@ -6753,441 +7743,632 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1034 +#: templates/js/translated/api.js:190 templates/js/translated/modals.js:1056 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1057 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/translated/api.js:192 +#: templates/js/translated/api.js:197 msgid "Error 400: Bad request" msgstr "" -#: templates/js/translated/api.js:193 +#: templates/js/translated/api.js:198 msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1044 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1066 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1067 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1049 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1071 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1072 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1054 +#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1076 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1077 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1059 +#: templates/js/translated/api.js:217 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:218 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:222 templates/js/translated/modals.js:1081 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:223 templates/js/translated/modals.js:1082 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/translated/api.js:216 +#: templates/js/translated/api.js:226 msgid "Unhandled Error Code" msgstr "" -#: templates/js/translated/api.js:217 +#: templates/js/translated/api.js:227 msgid "Error code" msgstr "" -#: templates/js/translated/attachment.js:76 +#: templates/js/translated/attachment.js:78 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:98 +#: templates/js/translated/attachment.js:100 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:108 +#: templates/js/translated/attachment.js:110 msgid "Confirm Delete" msgstr "" -#: templates/js/translated/attachment.js:109 +#: templates/js/translated/attachment.js:111 msgid "Delete Attachment" msgstr "" -#: templates/js/translated/attachment.js:165 +#: templates/js/translated/attachment.js:167 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:178 +#: templates/js/translated/attachment.js:183 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:185 +#: templates/js/translated/attachment.js:190 msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1024 +#: templates/js/translated/barcode.js:183 +#: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:69 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:439 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:443 -#: templates/js/translated/barcode.js:573 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:485 -#: templates/js/translated/barcode.js:612 -msgid "Error transferring stock" +#: templates/js/translated/barcode.js:534 +msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:507 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:511 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:518 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:525 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:568 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:633 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:184 +#: templates/js/translated/bom.js:75 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:131 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:249 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 +msgid "Format" +msgstr "" + +#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 +#: templates/js/translated/order.js:456 +msgid "Select file format" +msgstr "" + +#: templates/js/translated/bom.js:294 +msgid "Cascading" +msgstr "" + +#: templates/js/translated/bom.js:295 +msgid "Download cascading / multi-level BOM" +msgstr "" + +#: templates/js/translated/bom.js:300 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:301 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:307 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:308 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:313 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:314 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:319 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:320 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:325 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:326 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:509 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:228 -msgid "Select and add a new variant item using the input below" +#: templates/js/translated/bom.js:565 +msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:239 +#: templates/js/translated/bom.js:576 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:245 +#: templates/js/translated/bom.js:582 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:284 +#: templates/js/translated/bom.js:621 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:285 +#: templates/js/translated/bom.js:622 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:404 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1111 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:413 -msgid "Open subassembly" +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 +msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:485 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:500 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:507 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 -msgid "Actions" -msgstr "" - -#: templates/js/translated/bom.js:616 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:618 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:620 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:718 templates/js/translated/build.js:855 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:774 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1095 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:996 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:78 +#: templates/js/translated/build.js:86 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:112 +#: templates/js/translated/build.js:120 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:133 +#: templates/js/translated/build.js:141 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:146 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:174 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 +#: templates/js/translated/stock.js:180 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 +#: templates/js/translated/stock.js:182 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:226 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:227 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:235 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:243 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:274 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:144 +#: templates/js/translated/build.js:285 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:153 +#: templates/js/translated/build.js:294 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:161 +#: templates/js/translated/build.js:302 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:184 +#: templates/js/translated/build.js:325 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:343 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:220 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:221 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:275 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:386 +#: templates/js/translated/build.js:583 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:603 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1072 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1082 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1107 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1124 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1194 templates/stock_table.html:52 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1262 -msgid "Specify stock allocation quantity" -msgstr "" - -#: templates/js/translated/build.js:1333 templates/js/translated/label.js:134 -#: templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1334 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1348 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:2024 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:2025 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1377 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1389 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1451 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1576 +#: templates/js/translated/build.js:2247 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:2248 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:2250 +msgid "If a location is specifed, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:2251 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:2252 +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:2273 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1613 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1686 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1737 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -7207,7 +8388,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:90 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -7235,65 +8416,65 @@ msgstr "" msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:386 +#: templates/js/translated/company.js:387 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:405 +#: templates/js/translated/company.js:406 msgid "The following manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:422 +#: templates/js/translated/company.js:423 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:477 +#: templates/js/translated/company.js:480 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:500 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:504 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:734 +#: templates/js/translated/company.js:737 msgid "No supplier parts found" msgstr "" #: templates/js/translated/filters.js:178 -#: templates/js/translated/filters.js:420 +#: templates/js/translated/filters.js:441 msgid "true" msgstr "" #: templates/js/translated/filters.js:182 -#: templates/js/translated/filters.js:421 +#: templates/js/translated/filters.js:442 msgid "false" msgstr "" @@ -7301,591 +8482,801 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:286 +#: templates/js/translated/filters.js:288 +msgid "Download data" +msgstr "" + +#: templates/js/translated/filters.js:291 msgid "Reload data" msgstr "" -#: templates/js/translated/filters.js:290 +#: templates/js/translated/filters.js:295 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:293 +#: templates/js/translated/filters.js:298 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:329 +#: templates/js/translated/filters.js:350 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365 -#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393 +#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366 +#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:352 +#: templates/js/translated/forms.js:353 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:367 +#: templates/js/translated/forms.js:368 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:381 +#: templates/js/translated/forms.js:382 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:395 +#: templates/js/translated/forms.js:396 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:680 +#: templates/js/translated/forms.js:627 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:702 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1072 templates/modals.html:19 +#: templates/js/translated/forms.js:1194 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1463 +#: templates/js/translated/forms.js:1623 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:1667 +#: templates/js/translated/forms.js:1833 templates/search.html:29 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:1884 +#: templates/js/translated/forms.js:2082 msgid "Clear input" msgstr "" -#: templates/js/translated/helpers.js:19 +#: templates/js/translated/forms.js:2547 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2559 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:20 msgid "YES" msgstr "" -#: templates/js/translated/helpers.js:21 +#: templates/js/translated/helpers.js:22 msgid "NO" msgstr "" -#: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/helpers.js:307 +msgid "Notes updated" +msgstr "" + +#: templates/js/translated/label.js:39 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/label.js:60 templates/js/translated/report.js:118 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/label.js:30 +#: templates/js/translated/label.js:61 msgid "Stock item(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:48 templates/js/translated/label.js:98 -#: templates/js/translated/label.js:153 +#: templates/js/translated/label.js:79 templates/js/translated/label.js:133 +#: templates/js/translated/label.js:191 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:49 +#: templates/js/translated/label.js:80 msgid "No labels found which match selected stock item(s)" msgstr "" -#: templates/js/translated/label.js:80 +#: templates/js/translated/label.js:115 msgid "Select Stock Locations" msgstr "" -#: templates/js/translated/label.js:81 +#: templates/js/translated/label.js:116 msgid "Stock location(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:99 +#: templates/js/translated/label.js:134 msgid "No labels found which match selected stock location(s)" msgstr "" -#: templates/js/translated/label.js:135 +#: templates/js/translated/label.js:173 msgid "Part(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:154 +#: templates/js/translated/label.js:192 msgid "No labels found which match the selected part(s)" msgstr "" -#: templates/js/translated/label.js:228 +#: templates/js/translated/label.js:261 +msgid "Select Printer" +msgstr "" + +#: templates/js/translated/label.js:265 +msgid "Export to PDF" +msgstr "" + +#: templates/js/translated/label.js:304 msgid "stock items selected" msgstr "" -#: templates/js/translated/label.js:236 -msgid "Select Label" -msgstr "" - -#: templates/js/translated/label.js:251 +#: templates/js/translated/label.js:312 templates/js/translated/label.js:328 msgid "Select Label Template" msgstr "" -#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 +#: templates/js/translated/modals.js:610 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:118 -#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:963 +#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 +#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:117 +#: templates/js/translated/modals.js:118 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:380 +#: templates/js/translated/modals.js:392 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:539 +#: templates/js/translated/modals.js:551 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:592 +#: templates/js/translated/modals.js:609 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:649 +#: templates/js/translated/modals.js:666 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:915 +#: templates/js/translated/modals.js:937 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:915 +#: templates/js/translated/modals.js:937 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:927 +#: templates/js/translated/modals.js:949 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1024 +#: templates/js/translated/modals.js:1046 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1039 +#: templates/js/translated/modals.js:1061 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1062 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1063 +#: templates/js/translated/modals.js:1085 msgid "Error requesting form data" msgstr "" -#: templates/js/translated/model_renderers.js:40 +#: templates/js/translated/model_renderers.js:60 msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:77 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:130 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:147 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:182 -msgid "Part ID" -msgstr "" - -#: templates/js/translated/model_renderers.js:236 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:256 +#: templates/js/translated/model_renderers.js:302 +msgid "Shipment ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:293 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:322 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/order.js:48 +#: templates/js/translated/notification.js:231 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:235 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:259 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:300 templates/notifications.html:10 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:79 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/order.js:84 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/order.js:124 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/order.js:130 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/order.js:185 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:73 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:208 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 -msgid "Format" -msgstr "" - -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 -msgid "Select file format" -msgstr "" - -#: templates/js/translated/order.js:300 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:301 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:326 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:427 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:428 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:430 -msgid "Receive" +#: templates/js/translated/order.js:741 +msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:449 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:450 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 -msgid "Edit line item" +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 +msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:998 -msgid "Delete line item" -msgstr "" - -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 -msgid "No sales order allocations found" +#: templates/js/translated/order.js:1773 +msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1248 -msgid "Edit Stock Allocation" +#: templates/js/translated/order.js:1776 +msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1265 -msgid "Confirm Delete Operation" -msgstr "" - -#: templates/js/translated/order.js:1266 -msgid "Delete Stock Allocation" -msgstr "" - -#: templates/js/translated/order.js:1308 -msgid "Stock location not specified" -msgstr "" - -#: templates/js/translated/order.js:1557 -msgid "Fulfilled" -msgstr "" - -#: templates/js/translated/order.js:1601 -msgid "Allocate serial numbers" -msgstr "" - -#: templates/js/translated/order.js:1607 -msgid "Purchase stock" -msgstr "" - -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 -msgid "Calculate price" -msgstr "" - -#: templates/js/translated/order.js:1618 -msgid "Delete line item " -msgstr "" - -#: templates/js/translated/order.js:1741 -msgid "Allocate Stock Item" +#: templates/js/translated/order.js:1781 +msgid "Delete shipment" msgstr "" #: templates/js/translated/order.js:1801 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/order.js:1818 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/order.js:1852 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/order.js:1862 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/order.js:1886 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/order.js:1892 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/order.js:2260 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/order.js:2341 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2358 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/order.js:2359 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/order.js:2782 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/order.js:2788 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/order.js:2807 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/order.js:2810 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/order.js:2892 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 -msgid "Part Attributes" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" msgstr "" #: templates/js/translated/part.js:55 -msgid "Part Creation Options" +msgid "Part Attributes" msgstr "" #: templates/js/translated/part.js:59 -msgid "Part Duplication Options" +msgid "Part Creation Options" msgstr "" #: templates/js/translated/part.js:63 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:353 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 -msgid "Trackable part" +#: templates/js/translated/part.js:449 +msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 -msgid "Virtual part" +#: templates/js/translated/part.js:459 +msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 -msgid "Subscribed part" +#: templates/js/translated/part.js:462 +msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:461 -msgid "Salable part" +#: templates/js/translated/part.js:487 +msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:576 -msgid "No variants found" -msgstr "" - -#: templates/js/translated/part.js:765 -msgid "Delete part relationship" -msgstr "" - -#: templates/js/translated/part.js:789 -msgid "Delete Part Relationship" -msgstr "" - -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 -msgid "No parts found" -msgstr "" - -#: templates/js/translated/part.js:1026 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:1049 -#: templates/js/translated/table_filters.js:381 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:573 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:577 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:705 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1095 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1119 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:1223 +msgid "Not available" +msgstr "" + +#: templates/js/translated/part.js:1374 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:2108 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2141 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:2167 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" +#: templates/js/translated/plugin.js:22 +msgid "The Plugin was installed" +msgstr "" + #: templates/js/translated/report.js:67 msgid "items selected" msgstr "" @@ -7952,283 +9343,351 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/search.js:286 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:289 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:72 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 -msgid "Next available serial number" +#: templates/js/translated/stock.js:100 +msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 -msgid "Latest serial number" -msgstr "" - -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:109 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:303 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 -msgid "Export Stock" -msgstr "" - #: templates/js/translated/stock.js:431 -msgid "Include Sublocations" +msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 -msgid "Include stock items in sublocations" +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 +msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:474 -msgid "Transfer Stock" +#: templates/js/translated/stock.js:452 +msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:475 -msgid "Move" +#: templates/js/translated/stock.js:472 +msgid "No matching serial number" msgstr "" #: templates/js/translated/stock.js:481 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:604 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:605 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:682 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:683 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:685 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:686 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:772 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:773 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:868 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:869 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:1235 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1485 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1507 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 -msgid "Shipped to customer" -msgstr "" - -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 -msgid "Stock item has been allocated" +#: templates/js/translated/stock.js:1732 +msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1734 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 -#: templates/js/translated/table_filters.js:183 +#: templates/js/translated/stock.js:1756 +#: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 -msgid "items" -msgstr "" - -#: templates/js/translated/stock.js:1485 -msgid "batches" -msgstr "" - -#: templates/js/translated/stock.js:1512 -msgid "locations" -msgstr "" - -#: templates/js/translated/stock.js:1514 -msgid "Undefined location" -msgstr "" - -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 -msgid "Invalid date" -msgstr "" - -#: templates/js/translated/stock.js:1949 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2103 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" +#: templates/js/translated/stock.js:2657 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:2658 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:2660 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2661 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 +msgid "Select part to install" +msgstr "" + #: templates/js/translated/table_filters.js:56 msgid "Trackable Part" msgstr "" @@ -8246,7 +9705,7 @@ msgid "Allow Variant Stock" msgstr "" #: templates/js/translated/table_filters.js:110 -#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:183 msgid "Include sublocations" msgstr "" @@ -8256,54 +9715,54 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:358 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" #: templates/js/translated/table_filters.js:136 -#: templates/js/translated/table_filters.js:213 +#: templates/js/translated/table_filters.js:218 msgid "Is Serialized" msgstr "" #: templates/js/translated/table_filters.js:139 -#: templates/js/translated/table_filters.js:220 +#: templates/js/translated/table_filters.js:225 msgid "Serial number GTE" msgstr "" #: templates/js/translated/table_filters.js:140 -#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:226 msgid "Serial number greater than or equal to" msgstr "" #: templates/js/translated/table_filters.js:143 -#: templates/js/translated/table_filters.js:224 +#: templates/js/translated/table_filters.js:229 msgid "Serial number LTE" msgstr "" #: templates/js/translated/table_filters.js:144 -#: templates/js/translated/table_filters.js:225 +#: templates/js/translated/table_filters.js:230 msgid "Serial number less than or equal to" msgstr "" #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:216 -#: templates/js/translated/table_filters.js:217 +#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:222 msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:348 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -8324,183 +9783,239 @@ msgid "Item has been allocated" msgstr "" #: templates/js/translated/table_filters.js:179 -msgid "Include stock in sublocations" +msgid "Stock is available for use" msgstr "" #: templates/js/translated/table_filters.js:184 -msgid "Show stock items which are depleted" +msgid "Include stock in sublocations" msgstr "" #: templates/js/translated/table_filters.js:189 -msgid "Show items which are in stock" -msgstr "" - -#: templates/js/translated/table_filters.js:193 -msgid "In Production" +msgid "Show stock items which are depleted" msgstr "" #: templates/js/translated/table_filters.js:194 -msgid "Show items which are in production" +msgid "Show items which are in stock" msgstr "" #: templates/js/translated/table_filters.js:198 -msgid "Include Variants" +msgid "In Production" msgstr "" #: templates/js/translated/table_filters.js:199 -msgid "Include stock items for variant parts" +msgid "Show items which are in production" msgstr "" #: templates/js/translated/table_filters.js:203 -msgid "Installed" +msgid "Include Variants" msgstr "" #: templates/js/translated/table_filters.js:204 -msgid "Show stock items which are installed in another item" +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:208 +msgid "Installed" msgstr "" #: templates/js/translated/table_filters.js:209 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:214 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:229 -#: templates/js/translated/table_filters.js:230 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:235 msgid "Stock status" msgstr "" #: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:248 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:254 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:313 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:318 -#: templates/js/translated/table_filters.js:335 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:359 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:363 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:364 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:377 -msgid "Stock available" +#: templates/js/translated/table_filters.js:448 +msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:405 +#: templates/js/translated/table_filters.js:456 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" -#: templates/js/translated/tables.js:368 +#: templates/js/translated/tables.js:50 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:54 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:433 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:371 +#: templates/js/translated/tables.js:436 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:441 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:443 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 +#: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:450 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:453 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:456 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:459 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:462 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:465 msgid "All" msgstr "" -#: templates/navbar.html:40 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:52 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:86 users/models.py:39 -msgid "Admin" +#: templates/navbar.html:116 +msgid "Show Notifications" msgstr "" -#: templates/navbar.html:88 +#: templates/navbar.html:119 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:90 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:13 +msgid "Show all notifications and history" msgstr "" #: templates/qr_code.html:11 @@ -8515,6 +10030,26 @@ msgstr "" 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:16 +msgid "Filter results" +msgstr "" + +#: templates/search.html:20 +msgid "Close search menu" +msgstr "" + +#: templates/search.html:35 +msgid "No search results" +msgstr "" + #: templates/stats.html:9 msgid "Server" msgstr "" @@ -8539,86 +10074,102 @@ msgstr "" msgid "Server is deployed using docker" msgstr "" -#: templates/stats.html:40 -msgid "Server status" +#: templates/stats.html:39 +msgid "Plugin Support" msgstr "" #: templates/stats.html:43 -msgid "Healthy" +msgid "Plugin support enabled" msgstr "" #: templates/stats.html:45 -msgid "Issues detected" +msgid "Plugin support disabled" msgstr "" #: templates/stats.html:52 -msgid "Background Worker" +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:63 +#: templates/stats.html:75 msgid "Email Settings" msgstr "" -#: templates/stats.html:66 +#: templates/stats.html:78 msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:14 -msgid "Export Stock Information" -msgstr "" - -#: templates/stock_table.html:20 +#: templates/stock_table.html:17 msgid "Barcode Actions" msgstr "" -#: templates/stock_table.html:36 +#: templates/stock_table.html:33 msgid "Print test reports" msgstr "" -#: templates/stock_table.html:43 +#: templates/stock_table.html:40 msgid "Stock Options" msgstr "" -#: templates/stock_table.html:48 +#: templates/stock_table.html:45 msgid "Add to selected stock items" msgstr "" -#: templates/stock_table.html:49 +#: templates/stock_table.html:46 msgid "Remove from selected stock items" msgstr "" -#: templates/stock_table.html:50 +#: templates/stock_table.html:47 msgid "Stocktake selected stock items" msgstr "" -#: templates/stock_table.html:51 +#: templates/stock_table.html:48 msgid "Move selected stock items" msgstr "" -#: templates/stock_table.html:51 -msgid "Move stock" +#: templates/stock_table.html:49 +msgid "Merge selected stock items" msgstr "" -#: templates/stock_table.html:52 +#: templates/stock_table.html:49 +msgid "Merge stock" +msgstr "" + +#: templates/stock_table.html:50 msgid "Order selected items" msgstr "" -#: templates/stock_table.html:53 +#: templates/stock_table.html:52 msgid "Change status" msgstr "" -#: templates/stock_table.html:53 +#: templates/stock_table.html:52 msgid "Change stock status" msgstr "" -#: templates/stock_table.html:56 +#: templates/stock_table.html:55 msgid "Delete selected items" msgstr "" +#: templates/stock_table.html:55 +msgid "Delete stock" +msgstr "" + #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -8651,34 +10202,34 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:187 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:195 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:198 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:198 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:200 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:202 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:202 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:204 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.mo b/InvenTree/locale/es/LC_MESSAGES/django.mo deleted file mode 100644 index 5fe6a6efb8..0000000000 Binary files a/InvenTree/locale/es/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 98ad23505c..933edb703b 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -16,242 +15,251 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" -msgstr "endpoint API no encontrado" +msgstr "" #: InvenTree/api.py:103 msgid "No action specified" -msgstr "No se especificó ninguna acción" +msgstr "" #: InvenTree/api.py:118 msgid "No matching action found" -msgstr "No se encontró ninguna acción coincidente" +msgstr "" #: InvenTree/fields.py:100 msgid "Enter date" -msgstr "Ingrese la fecha" +msgstr "" #: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 #: order/forms.py:57 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:601 msgid "Confirm" -msgstr "Confirmar" +msgstr "" #: InvenTree/forms.py:142 msgid "Confirm delete" -msgstr "Confirmar eliminación" +msgstr "" #: InvenTree/forms.py:143 msgid "Confirm item deletion" -msgstr "Confirmar borrado de artículo" +msgstr "" #: InvenTree/forms.py:174 msgid "Enter password" -msgstr "Introduzca contraseña" +msgstr "" #: InvenTree/forms.py:175 msgid "Enter new password" -msgstr "Ingrese su nueva contraseña" +msgstr "" #: InvenTree/forms.py:182 msgid "Confirm password" -msgstr "Confirmar la contraseña" +msgstr "" #: InvenTree/forms.py:183 msgid "Confirm new password" -msgstr "Confirmar contraseña nueva" +msgstr "" #: InvenTree/forms.py:215 msgid "Select Category" -msgstr "Seleccionar Categoría" +msgstr "" #: InvenTree/forms.py:236 msgid "Email (again)" -msgstr "Email (de nuevo)" +msgstr "" #: InvenTree/forms.py:240 msgid "Email address confirmation" -msgstr "Confirmación de dirección de email" +msgstr "" #: InvenTree/forms.py:260 msgid "You must type the same email each time." -msgstr "Debe escribir el mismo correo electrónico cada vez." +msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" -msgstr "Cantidad proporcionada no válida" +msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" -msgstr "No se ha proporcionado un número de serie" +msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" -msgstr "Grupo no válido: un {g}" +msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" -msgstr "No válido/sin grupo {group}" +msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" -msgstr "Numeros de serie no encontrados" +msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" -msgstr "El número de números de serie únicos ({s}) debe coincidir con la cantidad ({q})" +msgstr "" #: InvenTree/models.py:185 msgid "Missing file" -msgstr "Archivo no encontrado" +msgstr "" #: InvenTree/models.py:186 msgid "Missing external link" -msgstr "Falta enlace externo" +msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" -msgstr "Archivo adjunto" +msgstr "" #: InvenTree/models.py:198 msgid "Select file to attach" -msgstr "Seleccionar archivo para adjuntar" +msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "Enlace" +msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" -msgstr "Enlace a URL externa" +msgstr "" #: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" -msgstr "Comentario" +msgstr "" #: InvenTree/models.py:208 msgid "File comment" -msgstr "Comentario del archivo" +msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" -msgstr "Usuario" +msgstr "" #: InvenTree/models.py:218 msgid "upload date" -msgstr "fecha de subida" +msgstr "" #: InvenTree/models.py:241 msgid "Filename must not be empty" -msgstr "El nombre del archivo no debe estar vacío" +msgstr "" #: InvenTree/models.py:264 msgid "Invalid attachment directory" -msgstr "Directorio de archivos adjuntos no válido" +msgstr "" #: InvenTree/models.py:274 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "El nombre del archivo contiene el carácter ilegal '{c}'" +msgstr "" #: InvenTree/models.py:277 msgid "Filename missing extension" -msgstr "Falta el nombre de extensión del archivo" +msgstr "" #: InvenTree/models.py:284 msgid "Attachment with this filename already exists" -msgstr "Ya existe un archivo adjunto con este nombre" +msgstr "" #: InvenTree/models.py:291 msgid "Error renaming file" -msgstr "Error al cambiar el nombre del archivo" +msgstr "" #: InvenTree/models.py:326 msgid "Invalid choice" -msgstr "Selección no válida" +msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" -msgstr "Nombre" +msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" -msgstr "Descripción" +msgstr "" #: InvenTree/models.py:350 msgid "Description (optional)" -msgstr "Descripción (opcional)" +msgstr "" #: InvenTree/models.py:358 msgid "parent" -msgstr "padre" +msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" -msgstr "Debe ser un numero valido" +msgstr "" #: InvenTree/serializers.py:299 msgid "Filename" -msgstr "Nombre de Archivo" +msgstr "" #: InvenTree/serializers.py:334 msgid "Invalid value" -msgstr "Valor inválido" +msgstr "" #: InvenTree/serializers.py:355 msgid "Data File" @@ -263,11 +271,11 @@ msgstr "" #: InvenTree/serializers.py:380 msgid "Unsupported file type" -msgstr "Tipo de archivo no soportado" +msgstr "" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "El archivo es demasiado grande" +msgstr "" #: InvenTree/serializers.py:407 msgid "No columns found in file" @@ -295,648 +303,667 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "Alemán" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "Griego" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "Inglés" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "Español" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "Español (México)" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "Francés" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "Hebreo" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" -msgstr "Italiano" +msgid "German" +msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" -msgstr "Japonés" +msgid "Greek" +msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" -msgstr "Coreano" +msgid "English" +msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" -msgstr "Holandés" +msgid "Spanish" +msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" -msgstr "Noruego" +msgid "Spanish (Mexican)" +msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" -msgstr "Polaco" +msgid "Farsi / Persian" +msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugués" +msgid "French" +msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" -msgstr "Ruso" +msgid "Hebrew" +msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" -msgstr "Sueco" +msgid "Hungarian" +msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" -msgstr "Tailandés" +msgid "Italian" +msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" -msgstr "Turco" +msgid "Japanese" +msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" -msgstr "Vietnamita" +msgid "Korean" +msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" -msgstr "Chino" +msgstr "" #: InvenTree/status.py:110 msgid "Background worker check failed" -msgstr "Falló la comprobación en segundo plano del worker" +msgstr "" #: InvenTree/status.py:114 msgid "Email backend not configured" -msgstr "No se ha configurado el backend de correo" +msgstr "" #: InvenTree/status.py:117 msgid "InvenTree system health checks failed" -msgstr "Las comprobaciones de estado del sistema InvenTree fallaron" +msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" -msgstr "Pendiente" +msgstr "" #: InvenTree/status_codes.py:102 msgid "Placed" -msgstr "Colocado" +msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" -msgstr "Terminado" +msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" -msgstr "Cancelado" +msgstr "" #: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145 #: InvenTree/status_codes.py:187 msgid "Lost" -msgstr "Perdida" +msgstr "" #: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146 #: InvenTree/status_codes.py:189 msgid "Returned" -msgstr "Devuelto" +msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" -msgstr "Enviado" +msgstr "" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" -msgstr "Atención necesaria" +msgstr "" #: InvenTree/status_codes.py:185 msgid "Damaged" -msgstr "Dañado" +msgstr "" #: InvenTree/status_codes.py:186 msgid "Destroyed" -msgstr "Destruido" +msgstr "" #: InvenTree/status_codes.py:188 msgid "Rejected" -msgstr "Rechazado" +msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" -msgstr "Entrada antigua de rastreo de stock" - -#: InvenTree/status_codes.py:275 -msgid "Stock item created" -msgstr "Artículo de stock creado" - -#: InvenTree/status_codes.py:277 -msgid "Edited stock item" -msgstr "Elemento de stock editado" +msgstr "" #: InvenTree/status_codes.py:278 -msgid "Assigned serial number" -msgstr "Número de serie asignado" +msgid "Stock item created" +msgstr "" #: InvenTree/status_codes.py:280 -msgid "Stock counted" -msgstr "Stock contado" +msgid "Edited stock item" +msgstr "" #: InvenTree/status_codes.py:281 -msgid "Stock manually added" -msgstr "Stock añadido manualmente" +msgid "Assigned serial number" +msgstr "" -#: InvenTree/status_codes.py:282 -msgid "Stock manually removed" -msgstr "Stock eliminado manualmente" +#: InvenTree/status_codes.py:283 +msgid "Stock counted" +msgstr "" #: InvenTree/status_codes.py:284 -msgid "Location changed" -msgstr "Ubicación cambiada" +msgid "Stock manually added" +msgstr "" -#: InvenTree/status_codes.py:286 -msgid "Installed into assembly" -msgstr "Instalado en el ensamblaje" +#: InvenTree/status_codes.py:285 +msgid "Stock manually removed" +msgstr "" #: InvenTree/status_codes.py:287 -msgid "Removed from assembly" -msgstr "Retirado del ensamblaje" +msgid "Location changed" +msgstr "" #: InvenTree/status_codes.py:289 -msgid "Installed component item" -msgstr "Artículo del componente instalado" +msgid "Installed into assembly" +msgstr "" #: InvenTree/status_codes.py:290 -msgid "Removed component item" -msgstr "Elemento de componente eliminado" +msgid "Removed from assembly" +msgstr "" #: InvenTree/status_codes.py:292 -msgid "Split from parent item" -msgstr "Separar del elemento principal" +msgid "Installed component item" +msgstr "" #: InvenTree/status_codes.py:293 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:295 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:296 msgid "Split child item" -msgstr "Dividir elemento secundario" +msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" -msgstr "Artículos de stock combinados" - -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 -msgid "Sent to customer" -msgstr "Enviar al cliente" - -#: InvenTree/status_codes.py:298 -msgid "Returned from customer" -msgstr "Devolución del cliente" +msgstr "" #: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:303 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:305 msgid "Build order output created" -msgstr "Trabajo de ensamblaje creado" +msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" -msgstr "Construir orden de salida completado" +msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" -msgstr "Recibido contra la orden de compra" +msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" -msgstr "Producción" +msgstr "" #: InvenTree/validators.py:25 msgid "Not a valid currency code" -msgstr "No es un código de moneda válido" +msgstr "" #: InvenTree/validators.py:53 msgid "Invalid character in part name" -msgstr "Carácter no válido en el nombre del artículo" +msgstr "" #: InvenTree/validators.py:66 #, python-brace-format msgid "IPN must match regex pattern {pat}" -msgstr "El IPN debe coincidir con la expresión regular {pat}" +msgstr "" #: InvenTree/validators.py:80 InvenTree/validators.py:94 #: InvenTree/validators.py:108 #, python-brace-format msgid "Reference must match pattern {pattern}" -msgstr "La referencia debe coincidir con la expresión regular {pattern}" +msgstr "" #: InvenTree/validators.py:116 #, python-brace-format msgid "Illegal character in name ({x})" -msgstr "Carácter ilegal en el nombre ({x})" +msgstr "" #: InvenTree/validators.py:137 InvenTree/validators.py:153 msgid "Overage value must not be negative" -msgstr "El valor excedente no debe ser negativo" +msgstr "" #: InvenTree/validators.py:155 msgid "Overage must not exceed 100%" -msgstr "El excedente no debe superar el 100%" +msgstr "" #: InvenTree/validators.py:162 msgid "Invalid value for overage" -msgstr "Valor no válido para sobrecarga" +msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" -msgstr "Eliminar elemento" +msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" -msgstr "Marque la casilla para confirmar la eliminación del artículo" +msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" -msgstr "Editar datos del usuario" +msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" -msgstr "Configurar Contraseña" +msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" -msgstr "Los campos de contraseña deben coincidir" +msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" -msgstr "Información del sistema" +msgstr "" #: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" -msgstr "Debe proporcionar el parámetro barcode_data" +msgstr "" #: barcodes/api.py:132 msgid "No match found for barcode data" -msgstr "No se encontró ninguna coincidencia para los datos del código de barras" +msgstr "" #: barcodes/api.py:134 msgid "Match found for barcode data" -msgstr "Coincidencia encontrada para datos de códigos de barras" +msgstr "" #: barcodes/api.py:159 msgid "Must provide stockitem parameter" -msgstr "Debe proporcionar el parámetro stockitem" +msgstr "" #: barcodes/api.py:166 msgid "No matching stock item found" -msgstr "No se ha encontrado ningún artículo de stock que coincida" +msgstr "" #: barcodes/api.py:197 msgid "Barcode already matches Stock Item" -msgstr "El código de barras ya está asignado a un objeto de inventario" +msgstr "" #: barcodes/api.py:201 msgid "Barcode already matches Stock Location" -msgstr "El código de barras ya coincide con una ubicación de stock" +msgstr "" #: barcodes/api.py:205 msgid "Barcode already matches Part" -msgstr "El código de barras ya está asignado a un objeto de inventario" +msgstr "" #: barcodes/api.py:211 barcodes/api.py:223 msgid "Barcode hash already matches Stock Item" -msgstr "El código de barras ya coincide con un artículo de stock" +msgstr "" #: barcodes/api.py:229 msgid "Barcode associated with Stock Item" -msgstr "Código de barras asignado al objeto de inventario" +msgstr "" #: build/forms.py:20 msgid "Confirm cancel" -msgstr "Confirmar cancelación" +msgstr "" #: build/forms.py:20 build/views.py:62 msgid "Confirm build cancellation" -msgstr "Confirmar la cancelación de construcción" +msgstr "" #: build/models.py:135 msgid "Invalid choice for parent build" -msgstr "Opción no válida para la construcción padre" +msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" -msgstr "Construir órden" +msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" -msgstr "Construir órdenes" +msgstr "" #: build/models.py:200 msgid "Build Order Reference" -msgstr "Número de orden de construcción o armado" +msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" -msgstr "Referencia" +msgstr "" #: build/models.py:212 msgid "Brief description of the build" -msgstr "Breve descripción de la construcción o armado" +msgstr "" #: build/models.py:221 build/templates/build/build_base.html:169 #: build/templates/build/detail.html:87 msgid "Parent Build" -msgstr "Construcción o Armado Superior" +msgstr "" #: build/models.py:222 msgid "BuildOrder to which this build is allocated" -msgstr "Orden de Construcción o Armado a la que se asigna" +msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" -msgstr "Parte" +msgstr "" #: build/models.py:235 msgid "Select part to build" -msgstr "Seleccionar parte a construir o armar" +msgstr "" #: build/models.py:240 msgid "Sales Order Reference" -msgstr "Referencia de orden de venta" +msgstr "" #: build/models.py:244 msgid "SalesOrder to which this build is allocated" -msgstr "Orden de Venta a la que se asigna" +msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" -msgstr "Ubicación de la fuente" +msgstr "" #: build/models.py:253 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)" +msgstr "" #: build/models.py:258 msgid "Destination Location" -msgstr "Ubicación de destino" +msgstr "" #: build/models.py:262 msgid "Select location where the completed items will be stored" -msgstr "Seleccione la ubicación donde se almacenarán los elementos completados" +msgstr "" #: build/models.py:266 msgid "Build Quantity" -msgstr "Cantidad a crear" +msgstr "" #: build/models.py:269 msgid "Number of stock items to build" -msgstr "Número de objetos existentes a construir" +msgstr "" #: build/models.py:273 msgid "Completed items" -msgstr "Elementos completados" +msgstr "" #: build/models.py:275 msgid "Number of stock items which have been completed" -msgstr "Número de productos en stock que se han completado" +msgstr "" #: build/models.py:279 msgid "Build Status" -msgstr "Estado de la construcción" +msgstr "" #: build/models.py:283 msgid "Build status code" -msgstr "Código de estado de construcción" +msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" -msgstr "Numero de lote" +msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" -msgstr "Número de lote de este producto final" +msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" -msgstr "Fecha de Creación" +msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" -msgstr "Fecha límite de finalización" +msgstr "" #: build/models.py:299 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha." +msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" -msgstr "Fecha de finalización" +msgstr "" #: build/models.py:308 msgid "completed by" -msgstr "terminado por" +msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" -msgstr "Emitido por" +msgstr "" #: build/models.py:317 msgid "User who issued this build order" -msgstr "El usuario que emitió esta orden" +msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" -msgstr "Responsable" +msgstr "" #: build/models.py:326 msgid "User responsible for this build order" -msgstr "Usuario responsable de esta orden" +msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" -msgstr "Link externo" +msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" -msgstr "Notas" +msgstr "" #: build/models.py:337 msgid "Extra build notes" -msgstr "Notas adicionales de construcción" +msgstr "" #: build/models.py:750 msgid "No build output specified" -msgstr "No se ha especificado salida de construcción" +msgstr "" #: build/models.py:753 msgid "Build output is already completed" -msgstr "La construcción de la salida ya está completa" +msgstr "" #: build/models.py:756 msgid "Build output does not match Build Order" -msgstr "La salida de la construcción no coincide con el orden de construcción" +msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" +msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" -msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" +msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" -msgstr "Artículo de stock sobreasignado" +msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" -msgstr "Cantidad asignada debe ser mayor que cero" +msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" -msgstr "La cantidad debe ser 1 para el stock serializado" +msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" -msgstr "Artículo de stock seleccionado no encontrado en BOM" +msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" -msgstr "Construcción o Armado" +msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" -msgstr "Armar para asignar partes" +msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" -msgstr "Artículo de stock" +msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" -msgstr "Producto original de stock" +msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,356 +971,369 @@ msgstr "Producto original de stock" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" -msgstr "Cantidad" - -#: build/models.py:1356 -msgid "Stock quantity to allocate to build" -msgstr "Cantidad de stock a asignar para construir" +msgstr "" #: build/models.py:1364 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1372 msgid "Install into" -msgstr "Instalar en" +msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" -msgstr "Artículo de stock de destino" +msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" -msgstr "Resultado de la construcción o armado" +msgstr "" #: build/serializers.py:150 msgid "Build output does not match the parent build" -msgstr "La salida de construcción no coincide con la construcción padre" +msgstr "" #: build/serializers.py:154 msgid "Output part does not match BuildOrder part" -msgstr "La parte de salida no coincide con la parte de la Orden de Construcción" +msgstr "" #: build/serializers.py:158 msgid "This build output has already been completed" -msgstr "Esta salida de construcción ya ha sido completada" +msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" -msgstr "Esta salida de construcción no está completamente asignada" +msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" -msgstr "Ingrese la cantidad para la producción de la construcción" +msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" -msgstr "La cantidad debe ser mayor que cero" +msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" -msgstr "Cantidad entera requerida para partes rastreables" +msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" -msgstr "Números de serie" +msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" -msgstr "Introduzca los números de serie de salidas de construcción" +msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" -msgstr "Autoasignar Números de Serie" +msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" -msgstr "Asignar automáticamente los elementos requeridos con números de serie coincidentes" +msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" -msgstr "Los siguientes números de serie ya existen" +msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" -msgstr "Debe proporcionarse una lista de salidas de construcción" +msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" -msgstr "Unicación" +msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" -msgstr "Ubicación para las salidas de construcción completadas" +msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" -msgstr "Estado" +msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" -msgstr "Aceptar no asignado" +msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 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" +msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" -msgstr "El stock requerido no ha sido completamente asignado" +msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" -msgstr "Aceptar incompleto" +msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 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" +msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" -msgstr "La cantidad de construcción requerida aún no se ha completado" +msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" -msgstr "El orden de construcción tiene salidas incompletas" +msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" -msgstr "No se han creado salidas para esta orden de construcción" +msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" -msgstr "Item de Lista de Materiales" +msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" -msgstr "Resultado de la construcción o armado" +msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" -msgstr "La salida de la construcción debe apuntar a la misma construcción" +msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" -msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción" +msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" -msgstr "El artículo debe estar en stock" +msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" -msgstr "Cantidad disponible ({q}) excedida" +msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" -msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas" +msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas" +msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" -msgstr "Debe proporcionarse la adjudicación de artículos" +msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" #: build/tasks.py:98 msgid "Stock required for build order" -msgstr "Stock requerido para la orden de construcción" +msgstr "" #: build/templates/build/build_base.html:39 #: order/templates/order/order_base.html:28 #: order/templates/order/sales_order_base.html:38 msgid "Print actions" -msgstr "Imprimir acciones" +msgstr "" #: build/templates/build/build_base.html:43 msgid "Print build order report" -msgstr "Imprimir informe de orden de construcción" +msgstr "" #: build/templates/build/build_base.html:50 msgid "Build actions" -msgstr "Acciones de construcción o armado" +msgstr "" #: build/templates/build/build_base.html:54 msgid "Edit Build" -msgstr "Editar construcción o armado" +msgstr "" #: build/templates/build/build_base.html:56 #: build/templates/build/build_base.html:220 build/views.py:53 msgid "Cancel Build" -msgstr "Cancelar construcción o armado" +msgstr "" #: build/templates/build/build_base.html:59 msgid "Delete Build" -msgstr "Eliminar construcción o armado" +msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 msgid "Complete Build" -msgstr "Completar construcción" +msgstr "" #: build/templates/build/build_base.html:87 msgid "Build Description" -msgstr "Descripción de Construcción" +msgstr "" #: build/templates/build/build_base.html:101 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" -msgstr "Este pedido de construcción está asignado a la orden de venta %(link)s" +msgstr "" #: build/templates/build/build_base.html:108 #, python-format msgid "This Build Order is a child of Build Order %(link)s" -msgstr "Esta orden de construcción es hijo de la orden de construcción %(link)s" +msgstr "" #: build/templates/build/build_base.html:115 msgid "Build Order is ready to mark as completed" -msgstr "Orden de construcción está lista para marcar como completada" +msgstr "" #: build/templates/build/build_base.html:120 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "La orden de construcción no se puede completar ya que existen salidas pendientes" +msgstr "" #: build/templates/build/build_base.html:125 msgid "Required build quantity has not yet been completed" -msgstr "La cantidad de construcción requerida aún no se ha completado" +msgstr "" #: build/templates/build/build_base.html:130 msgid "Stock has not been fully allocated to this Build Order" -msgstr "Stock no ha sido asignado completamente a este pedido de construcción" +msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" -msgstr "Fecha objetivo" +msgstr "" #: build/templates/build/build_base.html:156 #, python-format msgid "This build was due on %(target)s" -msgstr "Esta construcción vence el %(target)s" +msgstr "" #: build/templates/build/build_base.html:156 #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" -msgstr "Vencido" +msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" -msgstr "Completados" +msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" -msgstr "Orden de Venta" +msgstr "" #: build/templates/build/build_base.html:183 #: build/templates/build/detail.html:108 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" -msgstr "Emitido por" +msgstr "" #: build/templates/build/build_base.html:228 #: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" -msgstr "Salidas incompletas" +msgstr "" #: build/templates/build/build_base.html:229 msgid "Build Order cannot be completed as incomplete build outputs remain" -msgstr "Orden de construcción no se puede completar ya que quedan salidas incompletas de construcción" +msgstr "" #: build/templates/build/cancel.html:5 msgid "Are you sure you wish to cancel this build?" -msgstr "¿Estás seguro de que quieres cancelar esta construcción?" +msgstr "" #: build/templates/build/delete_build.html:5 msgid "Are you sure you want to delete this build?" @@ -1301,67 +1341,70 @@ msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "Detalles de Trabajo" +msgstr "" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "Fuente de stock" +msgstr "" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "Las existencias se pueden tomar desde cualquier ubicación disponible." +msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" -msgstr "Destinación" +msgstr "" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "Se requiere ubicación de destino" +msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "Partes asignadas" +msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" -msgstr "Lote" +msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" -msgstr "Creado" +msgstr "" #: build/templates/build/detail.html:137 msgid "No target date set" -msgstr "Sin fecha objetivo" +msgstr "" #: build/templates/build/detail.html:146 msgid "Build not complete" -msgstr "Trabajo incompleto" +msgstr "" #: build/templates/build/detail.html:157 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "Órdenes de Trabajo herederas" +msgstr "" #: build/templates/build/detail.html:172 msgid "Allocate Stock to Build" -msgstr "Asignar Stock a Trabajo" +msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" -msgstr "Desasignar stock" +msgstr "" #: build/templates/build/detail.html:177 msgid "Unallocate Stock" -msgstr "Desasignar stock" +msgstr "" #: build/templates/build/detail.html:179 msgid "Automatically allocate stock to build" @@ -1377,126 +1420,134 @@ msgstr "" #: build/templates/build/detail.html:183 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "Asignar stock" +msgstr "" #: build/templates/build/detail.html:186 msgid "Order required parts" -msgstr "Pedir partes necesarias" +msgstr "" #: build/templates/build/detail.html:187 #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 order/views.py:463 #: part/templates/part/category.html:174 msgid "Order Parts" -msgstr "Partes del pedido" +msgstr "" #: build/templates/build/detail.html:199 msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Stock no ha sido asignado completamente a esta Orden de Trabajo" +msgstr "" #: build/templates/build/detail.html:203 msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "El stock sin rastrear no ha sido asignado completamente para esta Orden de Trabajo" +msgstr "" #: build/templates/build/detail.html:210 msgid "Allocate selected items" -msgstr "Asignar partes seleccionadas" +msgstr "" #: build/templates/build/detail.html:220 msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Esta Orden de Trabajo no tiene ningún objeto BOM sin seguimiento asociados" +msgstr "" #: build/templates/build/detail.html:229 msgid "Incomplete Build Outputs" -msgstr "Salidas de Trabajo incompletas" +msgstr "" #: build/templates/build/detail.html:233 msgid "Create new build output" -msgstr "Crear nueva salida de trabajo" +msgstr "" #: build/templates/build/detail.html:234 msgid "New Build Output" -msgstr "Nueva Salida de Trabajo" +msgstr "" #: build/templates/build/detail.html:248 msgid "Output Actions" -msgstr "Acciones de salida" +msgstr "" #: build/templates/build/detail.html:252 msgid "Complete selected build outputs" -msgstr "Completa las salidas seleccionadas" +msgstr "" #: build/templates/build/detail.html:253 msgid "Complete outputs" -msgstr "Completar salidas" +msgstr "" #: build/templates/build/detail.html:255 msgid "Delete selected build outputs" -msgstr "Eliminar salidas seleccionadas" +msgstr "" #: build/templates/build/detail.html:256 msgid "Delete outputs" -msgstr "Eliminar salidas" +msgstr "" #: build/templates/build/detail.html:263 #: stock/templates/stock/location.html:188 templates/stock_table.html:27 msgid "Printing Actions" -msgstr "Acciones de impresión" +msgstr "" #: build/templates/build/detail.html:267 build/templates/build/detail.html:268 #: stock/templates/stock/location.html:192 templates/stock_table.html:31 msgid "Print labels" -msgstr "Imprimir Etiquetas" +msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" -msgstr "Salidas de Trabajo Completadas" +msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" -msgstr "Adjuntos" +msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" -msgstr "Notas del Trabajo" +msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" -msgstr "Asignación completa" +msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" -msgstr "Todos los artículos de stock no rastreados han sido asignados" +msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" -msgstr "Nueva Orden de Trabajo" +msgstr "" #: build/templates/build/index.html:37 build/templates/build/index.html:38 msgid "Print Build Orders" -msgstr "Imprimir Ordenes de Trabajo" +msgstr "" #: build/templates/build/index.html:44 #: order/templates/order/purchase_orders.html:34 #: order/templates/order/sales_orders.html:37 msgid "Display calendar view" -msgstr "Mostrar vista de calendario" +msgstr "" #: build/templates/build/index.html:47 #: order/templates/order/purchase_orders.html:37 #: order/templates/order/sales_orders.html:40 msgid "Display list view" -msgstr "Mostrar vista de lista" +msgstr "" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "Configuración de Pedido de Trabajo" +msgstr "" #: build/templates/build/sidebar.html:15 msgid "Completed Outputs" @@ -1504,1242 +1555,1254 @@ msgstr "" #: build/views.py:73 msgid "Build was cancelled" -msgstr "Trabajo fue cancelado" +msgstr "" #: build/views.py:114 msgid "Delete Build Order" -msgstr "Eliminar Orden de Trabajo" +msgstr "" #: common/files.py:65 msgid "Unsupported file format: {ext.upper()}" -msgstr "Formato de archivo no soportado: {ext.upper()}" +msgstr "" #: common/files.py:67 msgid "Error reading file (invalid encoding)" -msgstr "Error al leer el archivo (codificación inválida)" +msgstr "" #: common/files.py:72 msgid "Error reading file (invalid format)" -msgstr "Error al leer el archivo (formato no válido)" +msgstr "" #: common/files.py:74 msgid "Error reading file (incorrect dimension)" -msgstr "Error leyendo el archivo (dimensión incorrecta)" +msgstr "" #: common/files.py:76 msgid "Error reading file (data could be corrupted)" -msgstr "Error al leer el archivo (los datos podrían estar corruptos)" +msgstr "" #: common/forms.py:34 msgid "File" -msgstr "Archivo" +msgstr "" #: common/forms.py:35 msgid "Select file to upload" -msgstr "Seleccione el archivo a cargar" +msgstr "" #: common/forms.py:50 msgid "{name.title()} File" -msgstr "Archivo {name.title()}" +msgstr "" #: common/forms.py:51 #, python-brace-format msgid "Select {name} file to upload" -msgstr "Seleccione el archivo {name} para subir" +msgstr "" #: common/models.py:381 msgid "Settings key (must be unique - case insensitive)" -msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)" +msgstr "" #: common/models.py:383 msgid "Settings value" -msgstr "Valor de ajuste" +msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" -msgstr "El valor elegido no es una opción válida" +msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" -msgstr "El valor debe ser un valor booleano" +msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" -msgstr "El valor debe ser un entero" +msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" -msgstr "Cadena de clave debe ser única" +msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" -msgstr "Sin grupo" +msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" -msgstr "Reinicio requerido" +msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" -msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor" +msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "Nombre de Instancia de InvenTree" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "Descriptor de cadena para la instancia del servidor" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "Usar nombre de instancia" - -#: common/models.py:694 -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:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "Nombre de empresa" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "Nombre interno de empresa" - -#: common/models.py:706 -msgid "Base URL" -msgstr "URL Base" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" -msgstr "URL base para la instancia del servidor" +msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" -msgstr "Moneda predeterminada" - -#: common/models.py:714 -msgid "Default currency" -msgstr "Moneda predeterminada" - -#: common/models.py:720 -msgid "Download from URL" -msgstr "Descargar desde URL" - -#: common/models.py:721 -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:727 templates/InvenTree/settings/sidebar.html:33 -msgid "Barcode Support" -msgstr "Soporte de código de barras" - -#: common/models.py:728 -msgid "Enable barcode scanner support" -msgstr "Habilitar soporte para escáner de código de barras" - -#: common/models.py:734 -msgid "IPN Regex" -msgstr "Regex IPN" - -#: common/models.py:735 -msgid "Regular expression pattern for matching Part IPN" -msgstr "Patrón de expresión regular para IPN de la parte coincidente" +msgstr "" #: common/models.py:739 -msgid "Allow Duplicate IPN" -msgstr "Permitir IPN duplicado" +msgid "Default currency" +msgstr "" -#: common/models.py:740 -msgid "Allow multiple parts to share the same IPN" -msgstr "Permitir que varias partes compartan el mismo IPN" +#: common/models.py:745 +msgid "Download from URL" +msgstr "" #: common/models.py:746 -msgid "Allow Editing IPN" -msgstr "Permitir editar IPN" +msgid "Allow download of remote images and files from external URL" +msgstr "" -#: common/models.py:747 -msgid "Allow changing the IPN value while editing a part" -msgstr "Permite cambiar el valor de IPN mientras se edita una pieza" +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 +msgid "Barcode Support" +msgstr "" #: common/models.py:753 -msgid "Copy Part BOM Data" -msgstr "Copiar parte de datos BOM" +msgid "Enable barcode scanner support" +msgstr "" -#: common/models.py:754 -msgid "Copy BOM data by default when duplicating a part" -msgstr "Copiar datos BOM por defecto al duplicar una parte" +#: common/models.py:759 +msgid "IPN Regex" +msgstr "" #: common/models.py:760 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:764 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:765 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:771 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:772 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:778 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:779 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:785 msgid "Copy Part Parameter Data" -msgstr "Copiar Parámetros de Pieza" +msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" -msgstr "Copiar datos de parámetro por defecto al duplicar una parte" +msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" -msgstr "Copiar parte de datos de prueba" +msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" -msgstr "Copiar datos de parámetro por defecto al duplicar una parte" +msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" -msgstr "Copiar plantillas de parámetros de categoría" +msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" -msgstr "Copiar plantillas de parámetros de categoría al crear una parte" +msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" -msgstr "Plantilla" +msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" -msgstr "Las piezas son plantillas por defecto" +msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" -msgstr "Montaje" +msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" -msgstr "Las piezas pueden ser ensambladas desde otros componentes por defecto" +msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" -msgstr "Componente" +msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" -msgstr "Las piezas pueden ser usadas como subcomponentes por defecto" +msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" -msgstr "Comprable" +msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" -msgstr "Las piezas son comprables por defecto" +msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" -msgstr "Vendible" +msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" -msgstr "Las piezas se pueden vender por defecto" +msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" -msgstr "Rastreable" +msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" -msgstr "Las piezas son rastreables por defecto" +msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" -msgstr "Virtual" - -#: common/models.py:824 -msgid "Parts are virtual by default" -msgstr "Las piezas son virtuales por defecto" - -#: common/models.py:830 -msgid "Show Import in Views" -msgstr "Mostrar importación en vistas" - -#: common/models.py:831 -msgid "Display the import wizard in some part views" -msgstr "Mostrar el asistente de importación en algunas vistas de partes" - -#: common/models.py:837 -msgid "Show Price in Forms" -msgstr "Mostrar precio en formularios" - -#: common/models.py:838 -msgid "Display part price in some forms" -msgstr "Mostrar precio de la pieza en algunos formularios" +msgstr "" #: common/models.py:849 -msgid "Show Price in BOM" -msgstr "Mostrar precio en BOM" +msgid "Parts are virtual by default" +msgstr "" -#: common/models.py:850 -msgid "Include pricing information in BOM tables" -msgstr "Incluye información de precios en tablas BOM" +#: common/models.py:855 +msgid "Show Import in Views" +msgstr "" -#: common/models.py:861 -msgid "Show Price History" -msgstr "Mostrar Historial de Precios" +#: common/models.py:856 +msgid "Display the import wizard in some part views" +msgstr "" #: common/models.py:862 -msgid "Display historical pricing for Part" -msgstr "Mostrar el precio histórico de la parte" +msgid "Show Price in Forms" +msgstr "" -#: common/models.py:868 -msgid "Show related parts" -msgstr "Mostrar piezas relacionadas" +#: common/models.py:863 +msgid "Display part price in some forms" +msgstr "" -#: common/models.py:869 -msgid "Display related parts for a part" -msgstr "Mostrar partes relacionadas para una pieza" +#: common/models.py:874 +msgid "Show Price in BOM" +msgstr "" #: common/models.py:875 +msgid "Include pricing information in BOM tables" +msgstr "" + +#: common/models.py:886 +msgid "Show Price History" +msgstr "" + +#: common/models.py:887 +msgid "Display historical pricing for Part" +msgstr "" + +#: common/models.py:893 +msgid "Show related parts" +msgstr "" + +#: common/models.py:894 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:900 msgid "Create initial stock" -msgstr "Crear stock inicial" +msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" -msgstr "Crear stock inicial en la creación de partes" +msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" -msgstr "Precios internos" +msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" -msgstr "Habilitar precios internos para piezas" +msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" -msgstr "Precio interno como precio de BOM" +msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" -msgstr "Usar el precio interno (si está establecido) en los cálculos de precios BOM" +msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" -msgstr "Formato de visualización de Nombre de Parte" +msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" -msgstr "Formato para mostrar el nombre de la pieza" - -#: common/models.py:904 -msgid "Enable Reports" -msgstr "Habilitar informes" - -#: common/models.py:905 -msgid "Enable generation of reports" -msgstr "Habilitar generación de informes" - -#: common/models.py:911 templates/stats.html:25 -msgid "Debug Mode" -msgstr "Modo de depuración" - -#: common/models.py:912 -msgid "Generate reports in debug mode (HTML output)" -msgstr "Generar informes en modo de depuración (salida HTML)" - -#: common/models.py:918 -msgid "Page Size" -msgstr "Tamaño de página" - -#: common/models.py:919 -msgid "Default page size for PDF reports" -msgstr "Tamaño de página predeterminado para informes PDF" +msgstr "" #: common/models.py:929 -msgid "Test Reports" -msgstr "Informe de prueba" +msgid "Enable Reports" +msgstr "" #: common/models.py:930 -msgid "Enable generation of test reports" -msgstr "Habilitar generación de informes de prueba" +msgid "Enable generation of reports" +msgstr "" -#: common/models.py:936 -msgid "Stock Expiry" -msgstr "Expiración de stock" +#: common/models.py:936 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" #: common/models.py:937 -msgid "Enable stock expiry functionality" -msgstr "Habilitar la funcionalidad de expiración de stock" +msgid "Generate reports in debug mode (HTML output)" +msgstr "" #: common/models.py:943 -msgid "Sell Expired Stock" -msgstr "Vender existencias caducadas" +msgid "Page Size" +msgstr "" #: common/models.py:944 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:954 +msgid "Test Reports" +msgstr "" + +#: common/models.py:955 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:968 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:974 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:975 msgid "Allow sale of expired stock" -msgstr "Permitir venta de existencias caducadas" +msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" -msgstr "Tiempo histórico de Stock" +msgstr "" -#: common/models.py:951 +#: common/models.py:982 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:953 -msgid "days" -msgstr "días" - -#: common/models.py:958 -msgid "Build Expired Stock" -msgstr "Crear Stock Caducado" - -#: common/models.py:959 -msgid "Allow building with expired stock" -msgstr "Permitir crear con stock caducado" - -#: common/models.py:965 -msgid "Stock Ownership Control" -msgstr "Control de Stock" - -#: common/models.py:966 -msgid "Enable ownership control over stock locations and items" -msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" - -#: common/models.py:972 -msgid "Build Order Reference Prefix" -msgstr "Prefijo de Referencia de Orden de Trabajo" - -#: common/models.py:973 -msgid "Prefix value for build order reference" -msgstr "Valor de prefijo para referencia de la orden de trabajo" - -#: common/models.py:978 -msgid "Build Order Reference Regex" -msgstr "Regex de Referencia de Orden de Trabajo" - -#: common/models.py:979 -msgid "Regular expression pattern for matching build order reference" -msgstr "Patrón de expresión regular para referencia de orden de trabajo coincidente" - -#: common/models.py:983 -msgid "Sales Order Reference Prefix" -msgstr "Prefijo de referencia de pedido de venta" +msgstr "" #: common/models.py:984 -msgid "Prefix value for sales order reference" -msgstr "Valor del prefijo para referencia del pedido de venta" +msgid "days" +msgstr "" #: common/models.py:989 -msgid "Purchase Order Reference Prefix" -msgstr "Prefijo de orden de compra" +msgid "Build Expired Stock" +msgstr "" #: common/models.py:990 -msgid "Prefix value for purchase order reference" -msgstr "Valor del prefijo para referencia de la orden de compra" +msgid "Allow building with expired stock" +msgstr "" #: common/models.py:996 -msgid "Enable password forgot" -msgstr "Habilitar función de contraseña olvidada" +msgid "Stock Ownership Control" +msgstr "" #: common/models.py:997 -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:1002 -msgid "Enable registration" -msgstr "Habilitar registro" +msgid "Enable ownership control over stock locations and items" +msgstr "" #: common/models.py:1003 -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" +msgid "Build Order Reference Prefix" +msgstr "" -#: common/models.py:1008 -msgid "Enable SSO" -msgstr "Habilitar SSO" +#: common/models.py:1004 +msgid "Prefix value for build order reference" +msgstr "" #: common/models.py:1009 -msgid "Enable SSO on the login pages" -msgstr "Habilitar SSO en las páginas de inicio de sesión" +msgid "Build Order Reference Regex" +msgstr "" + +#: common/models.py:1010 +msgid "Regular expression pattern for matching build order reference" +msgstr "" #: common/models.py:1014 -msgid "Email required" -msgstr "Email requerido" +msgid "Sales Order Reference Prefix" +msgstr "" #: common/models.py:1015 -msgid "Require user to supply mail on signup" -msgstr "Requiere usuario para suministrar correo al registrarse" +msgid "Prefix value for sales order reference" +msgstr "" #: common/models.py:1020 -msgid "Auto-fill SSO users" -msgstr "Auto-rellenar usuarios SSO" +msgid "Purchase Order Reference Prefix" +msgstr "" #: common/models.py:1021 -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:1026 -msgid "Mail twice" -msgstr "Correo dos veces" +msgid "Prefix value for purchase order reference" +msgstr "" #: common/models.py:1027 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1028 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1034 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1035 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1041 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1042 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1048 +msgid "Email required" +msgstr "" + +#: common/models.py:1049 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1055 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1056 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1062 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1063 msgid "On signup ask users twice for their mail" -msgstr "Al registrarse pregunte dos veces a los usuarios por su correo" +msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" -msgstr "Contraseña dos veces" +msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" -msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña" +msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" -msgstr "Grupo al registrarse" +msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" -msgstr "Grupo al que se asignan nuevos usuarios al registrarse" +msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" -msgstr "Forzar MFA" +msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." -msgstr "Los usuarios deben utilizar seguridad multifactor." +msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" -msgstr "Habilitar integración de URL" +msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" -msgstr "Habilitar plugins para añadir rutas de URL" +msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" -msgstr "Habilitar integración de navegación" +msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" -msgstr "Habilitar plugins para integrar en la navegación" +msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" -msgstr "Habilitar integración de la aplicación" +msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" -msgstr "Habilitar plugins para añadir aplicaciones" +msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" -msgstr "Habilitar integración de programación" +msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" -msgstr "Habilitar plugins para ejecutar tareas programadas" +msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" -msgstr "Habilitar integración de eventos" +msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" -msgstr "Habilitar plugins para responder a eventos internos" +msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" -msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas" - -#: common/models.py:1134 -msgid "Show subscribed parts" -msgstr "Mostrar partes suscritas" - -#: common/models.py:1135 -msgid "Show subscribed parts on the homepage" -msgstr "Mostrar las partes suscritas en la página principal" - -#: common/models.py:1140 -msgid "Show subscribed categories" -msgstr "Mostrar categorías suscritas" - -#: common/models.py:1141 -msgid "Show subscribed part categories on the homepage" -msgstr "Mostrar categorías de partes suscritas en la página de inicio" - -#: common/models.py:1146 -msgid "Show latest parts" -msgstr "Mostrar últimas partes" - -#: common/models.py:1147 -msgid "Show latest parts on the homepage" -msgstr "Mostrar las últimas partes en la página de inicio" - -#: common/models.py:1152 -msgid "Recent Part Count" -msgstr "Conteo de Partes Recientes" - -#: common/models.py:1153 -msgid "Number of recent parts to display on index page" -msgstr "Número de partes recientes a mostrar en la página de índice" - -#: common/models.py:1159 -msgid "Show unvalidated BOMs" -msgstr "Mostrar BOMs no validadas" - -#: common/models.py:1160 -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:1165 -msgid "Show recent stock changes" -msgstr "Mostrar cambios recientes de stock" - -#: common/models.py:1166 -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:1171 -msgid "Recent Stock Count" -msgstr "Conteo Reciente de Stock" - -#: common/models.py:1172 -msgid "Number of recent stock items to display on index page" -msgstr "Número de elementos de stock recientes a mostrar en la página de índice" - -#: common/models.py:1177 -msgid "Show low stock" -msgstr "Mostrar stock bajo" +msgstr "" #: common/models.py:1178 -msgid "Show low stock items on the homepage" -msgstr "Mostrar artículos de stock bajo en la página de inicio" +msgid "Show subscribed parts" +msgstr "" -#: common/models.py:1183 -msgid "Show depleted stock" -msgstr "Mostrar stock agotado" +#: common/models.py:1179 +msgid "Show subscribed parts on the homepage" +msgstr "" -#: common/models.py:1184 -msgid "Show depleted stock items on the homepage" -msgstr "Mostrar artículos agotados en la página de inicio" +#: common/models.py:1185 +msgid "Show subscribed categories" +msgstr "" -#: common/models.py:1189 -msgid "Show needed stock" -msgstr "Mostrar stock necesario" +#: common/models.py:1186 +msgid "Show subscribed part categories on the homepage" +msgstr "" -#: common/models.py:1190 -msgid "Show stock items needed for builds on the homepage" -msgstr "Mostrar elementos de stock necesarios para trabajos en la página de inicio" +#: common/models.py:1192 +msgid "Show latest parts" +msgstr "" -#: common/models.py:1195 -msgid "Show expired stock" -msgstr "Mostrar stock caducado" +#: common/models.py:1193 +msgid "Show latest parts on the homepage" +msgstr "" -#: common/models.py:1196 -msgid "Show expired stock items on the homepage" -msgstr "Mostrar artículos de stock caducados en la página de inicio" +#: common/models.py:1199 +msgid "Recent Part Count" +msgstr "" -#: common/models.py:1201 -msgid "Show stale stock" -msgstr "Mostrar stock obsoleto" +#: common/models.py:1200 +msgid "Number of recent parts to display on index page" +msgstr "" -#: common/models.py:1202 -msgid "Show stale stock items on the homepage" -msgstr "Mostrar elementos de stock obsoletos en la página de inicio" +#: common/models.py:1206 +msgid "Show unvalidated BOMs" +msgstr "" #: common/models.py:1207 -msgid "Show pending builds" -msgstr "Mostrar trabajos pendientes" - -#: common/models.py:1208 -msgid "Show pending builds on the homepage" -msgstr "Mostrar trabajos pendientes en la página de inicio" +msgid "Show BOMs that await validation on the homepage" +msgstr "" #: common/models.py:1213 -msgid "Show overdue builds" -msgstr "Mostrar trabajos vencidos" +msgid "Show recent stock changes" +msgstr "" #: common/models.py:1214 -msgid "Show overdue builds on the homepage" -msgstr "Mostrar trabajos pendientes en la página de inicio" - -#: common/models.py:1219 -msgid "Show outstanding POs" -msgstr "Mostrar Órdenes de Compra Pendientes" +msgid "Show recently changed stock items on the homepage" +msgstr "" #: common/models.py:1220 +msgid "Recent Stock Count" +msgstr "" + +#: common/models.py:1221 +msgid "Number of recent stock items to display on index page" +msgstr "" + +#: common/models.py:1227 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1228 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:1234 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1235 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1241 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1242 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1248 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1249 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1255 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1256 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:1262 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:1263 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:1269 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:1270 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:1276 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" -msgstr "Mostrar las OC destacadas en la página de inicio" +msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" -msgstr "Mostrar OC atrasadas" +msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" -msgstr "Mostrar las OC vencidas en la página de inicio" +msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" -msgstr "Mostrar OV pendiemtes" +msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" -msgstr "Mostrar OV pendientes en la página de inicio" +msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" -msgstr "Mostrar OV atrasadas" +msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" -msgstr "Mostrar OV atrasadas en la página de inicio" +msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" -msgstr "Mostrar etiqueta interior" +msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 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" +msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" -msgstr "Mostrar informe en línea" +msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 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" +msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" -msgstr "Resultados de la vista previa" +msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" -msgstr "Ocultar Partes Inactivas" +msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" -msgstr "Ocultar partes inactivas en la ventana de vista previa de búsqueda" +msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" -msgstr "Mostrar cantidad en formularios" +msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" -msgstr "Mostrar la cantidad de piezas disponibles en algunos formularios" +msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" -msgstr "Formularios de cierre de teclas de escape" +msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" -msgstr "Usa la clave de escape para cerrar formularios modales" +msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" -msgstr "Barra de navegación fija" +msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" -msgstr "La posición de la barra de navegación de InvenTree se fija en la parte superior de la pantalla" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" -msgstr "Cantidad de salto de precio" +msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" -msgstr "Precio" +msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" -msgstr "Precio unitario a la cantidad especificada" +msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" -msgstr "Endpoint" +msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" -msgstr "Punto final en el que se recibe este webhook" +msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" -msgstr "Nombre para este webhook" +msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" -msgstr "Activo" +msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" -msgstr "Está activo este webhook" +msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" -msgstr "Token" +msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" -msgstr "Token para el acceso" +msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" -msgstr "Clave" +msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" -msgstr "Secreto compartido para HMAC" +msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" -msgstr "ID de mensaje" +msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" -msgstr "Identificador único para este mensaje" +msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" -msgstr "Host" +msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" -msgstr "Servidor desde el cual se recibió este mensaje" +msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" -msgstr "Encabezado" +msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" -msgstr "Encabezado del mensaje" +msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" -msgstr "Cuerpo" +msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" -msgstr "Cuerpo de este mensaje" +msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" -msgstr "Endpoint en el que se recibió este mensaje" +msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" -msgstr "Trabajado en" +msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" -msgstr "¿El trabajo en este mensaje ha terminado?" +msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" -msgstr "Subir Archivo" +msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "Coincidir Campos" +msgstr "" #: common/views.py:95 msgid "Match Items" -msgstr "Coincidir elementos" +msgstr "" #: common/views.py:440 msgid "Fields matching failed" -msgstr "Falló la coincidencia de campos" +msgstr "" #: common/views.py:495 msgid "Parts imported" -msgstr "Partes importadas" +msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" -msgstr "Paso anterior" +msgstr "" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" -msgstr "URL de la imágen" +msgstr "" #: company/models.py:105 msgid "Company description" -msgstr "Descripción de la compañía" +msgstr "" #: company/models.py:106 msgid "Description of the company" -msgstr "Descripción de la empresa" +msgstr "" #: company/models.py:112 company/templates/company/company_base.html:97 #: templates/InvenTree/settings/plugin_settings.html:55 #: templates/js/translated/company.js:349 msgid "Website" -msgstr "Página web" +msgstr "" #: company/models.py:113 msgid "Company website URL" -msgstr "URL del sitio web de la empresa" +msgstr "" #: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" -msgstr "Dirección" +msgstr "" #: company/models.py:118 msgid "Company address" -msgstr "Dirección de la empresa" +msgstr "" #: company/models.py:121 msgid "Phone number" -msgstr "Teléfono" +msgstr "" #: company/models.py:122 msgid "Contact phone number" -msgstr "Teléfono de contacto" +msgstr "" #: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:48 msgid "Email" -msgstr "Email" +msgstr "" #: company/models.py:125 msgid "Contact email address" -msgstr "Correo electrónico de contacto" +msgstr "" #: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" -msgstr "Contacto" +msgstr "" #: company/models.py:129 msgid "Point of contact" -msgstr "Punto de contacto" +msgstr "" #: company/models.py:131 msgid "Link to external company information" -msgstr "Enlace a información externa de la empresa" +msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" -msgstr "Imágen" +msgstr "" #: company/models.py:144 msgid "is customer" -msgstr "es cliente" +msgstr "" #: company/models.py:144 msgid "Do you sell items to this company?" -msgstr "¿Vendes artículos a esta empresa?" +msgstr "" #: company/models.py:146 msgid "is supplier" -msgstr "es proveedor" +msgstr "" #: company/models.py:146 msgid "Do you purchase items from this company?" -msgstr "¿Compras artículos de esta empresa?" +msgstr "" #: company/models.py:148 msgid "is manufacturer" -msgstr "es fabricante" +msgstr "" #: company/models.py:148 msgid "Does this company manufacture parts?" -msgstr "¿Esta empresa fabrica piezas?" +msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" -msgstr "Moneda" +msgstr "" #: company/models.py:155 msgid "Default currency used for this company" -msgstr "Moneda predeterminada utilizada para esta empresa" +msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" -msgstr "Parte base" +msgstr "" #: company/models.py:324 company/models.py:539 msgid "Select part" -msgstr "Seleccionar pieza" +msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" -msgstr "Fabricante" +msgstr "" #: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" -msgstr "Seleccionar fabricante" +msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" -msgstr "Número de Parte del Fabricante" +msgstr "" #: company/models.py:349 msgid "URL for external manufacturer part link" -msgstr "URL para el enlace de parte del fabricante externo" +msgstr "" #: company/models.py:355 msgid "Manufacturer part description" -msgstr "Descripción de la parte del fabricante" +msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" -msgstr "Parte del fabricante" +msgstr "" #: company/models.py:416 msgid "Parameter name" -msgstr "Nombre del parámetro" +msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" -msgstr "Valor" +msgstr "" #: company/models.py:423 msgid "Parameter value" -msgstr "Valor del parámetro" +msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" -msgstr "Unidades" +msgstr "" #: company/models.py:430 msgid "Parameter units" -msgstr "Unidades de parámetro" +msgstr "" #: company/models.py:502 msgid "Linked manufacturer part must reference the same base part" -msgstr "La parte vinculada del fabricante debe hacer referencia a la misma pieza base" +msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" -msgstr "Proveedor" +msgstr "" #: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" -msgstr "Seleccionar proveedor" +msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" -msgstr "Unidad de mantenimiento de stock de proveedores" +msgstr "" #: company/models.py:559 msgid "Select manufacturer part" -msgstr "Seleccionar parte del fabricante" +msgstr "" #: company/models.py:565 msgid "URL for external supplier part link" -msgstr "URL del enlace de parte del proveedor externo" +msgstr "" #: company/models.py:571 msgid "Supplier part description" -msgstr "Descripción de la parte del proveedor" +msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" -msgstr "Nota" +msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" -msgstr "costo base" +msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" -msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)" +msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" -msgstr "Paquetes" +msgstr "" #: company/models.py:582 msgid "Part packaging" -msgstr "Embalaje de partes" +msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" -msgstr "múltiple" +msgstr "" #: company/models.py:584 msgid "Order multiple" -msgstr "Pedido múltiple" +msgstr "" #: company/models.py:708 msgid "last updated" @@ -2747,135 +2810,135 @@ msgstr "" #: company/serializers.py:70 msgid "Default currency used for this supplier" -msgstr "Moneda predeterminada utilizada para este proveedor" +msgstr "" #: company/serializers.py:71 msgid "Currency Code" -msgstr "Código de moneda" +msgstr "" #: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 #: templates/InvenTree/search.html:176 templates/js/translated/company.js:322 msgid "Company" -msgstr "Empresa" +msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" -msgstr "Crear orden de compra" +msgstr "" #: company/templates/company/company_base.html:26 msgid "Company actions" -msgstr "Acciones de empresa" +msgstr "" #: company/templates/company/company_base.html:31 msgid "Edit company information" -msgstr "Editar datos de la empresa" +msgstr "" #: company/templates/company/company_base.html:32 #: templates/js/translated/company.js:265 msgid "Edit Company" -msgstr "Modificar Empresa" +msgstr "" #: company/templates/company/company_base.html:36 msgid "Delete company" -msgstr "Eliminar empresa" +msgstr "" #: company/templates/company/company_base.html:37 #: company/templates/company/company_base.html:159 msgid "Delete Company" -msgstr "Eliminar Empresa" +msgstr "" #: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" -msgstr "Cargar nueva imagen" +msgstr "" #: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" -msgstr "Descargar desde URL" +msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" -msgstr "Cliente" +msgstr "" #: company/templates/company/company_base.html:108 msgid "Uses default currency" -msgstr "Usa la moneda predeterminada" +msgstr "" #: company/templates/company/company_base.html:122 msgid "Phone" -msgstr "Teléfono" +msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" -msgstr "Cargar Imagen" +msgstr "" #: company/templates/company/detail.html:14 #: company/templates/company/manufacturer_part_sidebar.html:7 #: templates/InvenTree/search.html:118 msgid "Supplier Parts" -msgstr "Partes de Proveedor" +msgstr "" #: company/templates/company/detail.html:18 #: order/templates/order/order_wizard/select_parts.html:44 msgid "Create new supplier part" -msgstr "Crear nueva parte del proveedor" +msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" -msgstr "Nueva Parte de Proveedor" +msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" -msgstr "Opciones" +msgstr "" #: company/templates/company/detail.html:36 #: company/templates/company/detail.html:83 #: part/templates/part/category.html:174 msgid "Order parts" -msgstr "Piezas de pedido" +msgstr "" #: company/templates/company/detail.html:41 #: company/templates/company/detail.html:88 msgid "Delete parts" -msgstr "Eliminar partes" +msgstr "" #: company/templates/company/detail.html:42 #: company/templates/company/detail.html:89 msgid "Delete Parts" -msgstr "Eliminar Partes" +msgstr "" #: company/templates/company/detail.html:61 templates/InvenTree/search.html:103 msgid "Manufacturer Parts" -msgstr "Partes del fabricante" +msgstr "" #: company/templates/company/detail.html:65 msgid "Create new manufacturer part" -msgstr "Crear nueva pieza de fabricante" +msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" -msgstr "Nueva pieza de fabricante" +msgstr "" #: company/templates/company/detail.html:106 msgid "Supplier Stock" -msgstr "Stock del Proveedor" +msgstr "" #: company/templates/company/detail.html:116 #: company/templates/company/sidebar.html:12 @@ -2883,1254 +2946,1285 @@ msgstr "Stock del Proveedor" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" -msgstr "Ordenes de compra" +msgstr "" #: company/templates/company/detail.html:120 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "Crear nueva orden de compra" +msgstr "" #: company/templates/company/detail.html:121 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "Nueva orden de compra" +msgstr "" #: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:20 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" -msgstr "Órdenes de venta" +msgstr "" #: company/templates/company/detail.html:146 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "Crear Orden de Venta" +msgstr "" #: company/templates/company/detail.html:147 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "Nueva orden de venta" +msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" -msgstr "Stock asignado" +msgstr "" #: company/templates/company/detail.html:184 msgid "Company Notes" -msgstr "Notas de la empresa" +msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" -msgstr "¿Eliminar piezas de proveedor?" +msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" -msgstr "Se eliminarán todas las partes del proveedor seleccionadas" +msgstr "" #: company/templates/company/index.html:8 msgid "Supplier List" -msgstr "Listado de proveedores" +msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" -msgstr "Fabricantes" +msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" -msgstr "Pedir ítem" +msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" -msgstr "Editar fabricante de la pieza" +msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" -msgstr "Eliminar fabricante de la pieza" +msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" -msgstr "Componente interno" +msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" -msgstr "Proveedores" +msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" -msgstr "Eliminar partes del proveedor" +msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" -msgstr "Eliminar" +msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" -msgstr "Parámetros" +msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" -msgstr "Nuevo parámetro" +msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" -msgstr "Eliminar parámetro" +msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" -msgstr "Añadir parámetro" +msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" -msgstr "Los parámetros seleccionados serán eliminados" +msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" -msgstr "Eliminar parámetros" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "Partes Manufacturadas" +msgstr "" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "Partes suministradas" +msgstr "" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "Elementos de stock suministrados" +msgstr "" #: company/templates/company/sidebar.html:22 msgid "Assigned Stock Items" -msgstr "Elementos de Stock Asignados" +msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" -msgstr "Ítems de Proveedor" +msgstr "" #: company/templates/company/supplier_part.html:38 #: templates/js/translated/company.js:863 msgid "Edit supplier part" -msgstr "Editar proveedor" +msgstr "" #: company/templates/company/supplier_part.html:42 #: templates/js/translated/company.js:864 msgid "Delete supplier part" -msgstr "Eliminar ítem del proveedor" +msgstr "" #: company/templates/company/supplier_part.html:138 #: company/templates/company/supplier_part_navbar.html:12 msgid "Supplier Part Stock" -msgstr "Stock del Proveedor" +msgstr "" #: company/templates/company/supplier_part.html:141 #: part/templates/part/detail.html:23 stock/templates/stock/location.html:167 msgid "Create new stock item" -msgstr "Crear nuevo artículo de stock" +msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" -msgstr "Nuevo artículo de stock" +msgstr "" #: company/templates/company/supplier_part.html:155 #: company/templates/company/supplier_part_navbar.html:19 msgid "Supplier Part Orders" -msgstr "Pedidos de piezas al proveedor" +msgstr "" #: company/templates/company/supplier_part.html:160 #: part/templates/part/detail.html:81 msgid "Order Part" -msgstr "Pedir ítem" +msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" -msgstr "Información de Precios" +msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" -msgstr "Agregar descuento de precio" +msgstr "" #: company/templates/company/supplier_part.html:210 msgid "No price break information found" -msgstr "No se ha encontrado información de descuento de precios" +msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" -msgstr "Eliminar precio de descuento" +msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" -msgstr "Editar precio de descuento" +msgstr "" #: company/templates/company/supplier_part.html:263 msgid "Edit price break" -msgstr "Editar precio de descuento" +msgstr "" #: company/templates/company/supplier_part.html:264 msgid "Delete price break" -msgstr "Eliminar precio de descuento" +msgstr "" #: company/templates/company/supplier_part.html:273 msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" -msgstr "Inventario" +msgstr "" #: company/templates/company/supplier_part_navbar.html:22 msgid "Orders" -msgstr "Pedidos" +msgstr "" #: company/templates/company/supplier_part_navbar.html:26 #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "Precio de pieza del proveedor" +msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" -msgstr "Precios" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" -msgstr "Elementos de stock" +msgstr "" #: company/views.py:50 msgid "New Supplier" -msgstr "Nuevo Proveedor" +msgstr "" #: company/views.py:56 msgid "New Manufacturer" -msgstr "Nuevo Fabricante" +msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" -msgstr "Clientes" +msgstr "" #: company/views.py:62 msgid "New Customer" -msgstr "Nuevo Cliente" +msgstr "" #: company/views.py:69 templates/js/translated/search.js:159 msgid "Companies" -msgstr "Empresas" +msgstr "" #: company/views.py:70 msgid "New Company" -msgstr "Nueva Compañía" +msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" -msgstr "Descargar imagen" +msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" -msgstr "El tamaño de la imagen excede el tamaño máximo permitido para descargar" +msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" -msgstr "Respuesta no válida: {code}" +msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" -msgstr "La URL proporcionada no es un archivo de imagen válido" +msgstr "" #: label/api.py:97 report/api.py:203 msgid "No valid objects provided to template" -msgstr "No se han proporcionado objetos válidos a la plantilla" +msgstr "" #: label/models.py:113 msgid "Label name" -msgstr "Nombre etiqueta" +msgstr "" #: label/models.py:120 msgid "Label description" -msgstr "Descripción de etiqueta" +msgstr "" #: label/models.py:127 msgid "Label" -msgstr "Etiqueta" +msgstr "" #: label/models.py:128 msgid "Label template file" -msgstr "Archivo de plantilla de etiqueta" +msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" -msgstr "Habilitado" +msgstr "" #: label/models.py:135 msgid "Label template is enabled" -msgstr "Plantilla de etiqueta habilitada" +msgstr "" #: label/models.py:140 msgid "Width [mm]" -msgstr "Ancho [mm]" +msgstr "" #: label/models.py:141 msgid "Label width, specified in mm" -msgstr "Ancho de la etiqueta, especificado en mm" +msgstr "" #: label/models.py:147 msgid "Height [mm]" -msgstr "Altura [mm]" +msgstr "" #: label/models.py:148 msgid "Label height, specified in mm" -msgstr "Altura de la etiqueta, especificada en mm" +msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" -msgstr "Patrón de Nombre de archivo" +msgstr "" #: label/models.py:155 msgid "Pattern for generating label filenames" -msgstr "Patrón para generar nombres de archivo de etiquetas" +msgstr "" #: label/models.py:258 msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor)," +msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" -msgstr "Filtros" +msgstr "" #: label/models.py:318 msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" +msgstr "" #: label/models.py:365 msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Filtros de búsqueda de partes (valor separado por comas de pares clave=valor)" +msgstr "" #: order/forms.py:24 order/templates/order/order_base.html:52 msgid "Place order" -msgstr "Realizar pedido" +msgstr "" #: order/forms.py:35 order/templates/order/order_base.html:60 msgid "Mark order as complete" -msgstr "Marcar pedido como completado" +msgstr "" #: order/forms.py:46 order/forms.py:57 order/templates/order/order_base.html:47 #: order/templates/order/sales_order_base.html:60 msgid "Cancel order" -msgstr "Cancelar orden" +msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" -msgstr "Descripción del pedido" +msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" -msgstr "Enlace a Url externa" +msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" -msgstr "Creado por" - -#: order/models.py:142 -msgid "User or group responsible for this order" -msgstr "Usuario o grupo responsable de este pedido" +msgstr "" #: order/models.py:147 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:152 msgid "Order notes" -msgstr "Notas del pedido" +msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" -msgstr "Referencia del pedido" +msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" -msgstr "Estado de la orden de compra" +msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" -msgstr "Compañía de la que se están encargando los artículos" +msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" -msgstr "Referencia del proveedor" +msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" -msgstr "Código de referencia de pedido del proveedor" +msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" -msgstr "recibido por" +msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" -msgstr "Fecha de emisión" +msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" -msgstr "Fecha de expedición del pedido" +msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" -msgstr "Fecha de entrega objetivo" +msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "Fecha esperada para la entrega del pedido. El pedido se retrasará después de esta fecha." +msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" -msgstr "La fecha de pedido fue completada" +msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" -msgstr "El proveedor de la pieza debe coincidir con el proveedor de PO" +msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" -msgstr "La cantidad debe ser un número positivo" +msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" -msgstr "Empresa a la que se venden los artículos" +msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " -msgstr "Referencia del cliente " +msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" -msgstr "Código de referencia de pedido del cliente" +msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." -msgstr "Fecha límite para la finalización del pedido. El pedido se retrasará después de esta fecha." +msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" -msgstr "Fecha de envío" +msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" -msgstr "enviado por" +msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" -msgstr "El pedido no se puede completar porque no se han asignado partes" +msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" -msgstr "Sólo una orden pendiente puede ser marcada como completa" +msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "El pedido no se puede completar porque hay envíos incompletos" +msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" -msgstr "El pedido no se puede completar porque hay artículos de línea incompletos" +msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" -msgstr "Cantidad del artículo" +msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" -msgstr "Referencia de línea en la orden" +msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" -msgstr "Notas del artículo de línea" +msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" -msgstr "La pieza del proveedor debe coincidir con el proveedor" +msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" -msgstr "Orden" +msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" -msgstr "Orden de compra" +msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" -msgstr "Ítems de Proveedor" +msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" -msgstr "Recibido" +msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" -msgstr "Número de artículos recibidos" +msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" -msgstr "Precio de Compra" +msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" -msgstr "Precio de compra unitario" +msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" -msgstr "¿Dónde quiere el comprador almacenar este objeto?" +msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" -msgstr "Precio de Venta" +msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" -msgstr "Precio de venta unitario" +msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" -msgstr "Cantidad enviada" +msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" -msgstr "Fecha del envío" +msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" -msgstr "Revisado por" +msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" -msgstr "Usuario que revisó este envío" +msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" -msgstr "Número de envío" +msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" -msgstr "Nota de envío" +msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" -msgstr "Número de Seguimiento" +msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" -msgstr "Información de seguimiento del envío" +msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" -msgstr "El envío ya ha sido enviado" +msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" -msgstr "El envío no tiene artículos de stock asignados" +msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" -msgstr "El artículo de stock no ha sido asignado" +msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" -msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente" +msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" -msgstr "No se puede asignar stock a una línea sin una pieza" +msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "La cantidad de asignación no puede exceder la cantidad de stock" +msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" -msgstr "Artículo de stock sobreasignado" +msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" -msgstr "La cantidad debe ser 1 para el stock serializado" +msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" -msgstr "La orden de venta no coincide con el envío" +msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" -msgstr "El envío no coincide con el pedido de venta" +msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" -msgstr "Línea" +msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" -msgstr "Envío" +msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" -msgstr "Referencia del envío del pedido de venta" +msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" -msgstr "Ítem" +msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" -msgstr "Seleccionar artículo de stock para asignar" +msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" -msgstr "Especificar la cantidad de asignación de stock" +msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" -msgstr "Moneda del precio de compra" +msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" -msgstr "Artículo en línea" +msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" -msgstr "La línea del artículo no coincide con la orden de compra" +msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" -msgstr "Seleccione la ubicación de destino para los artículos recibidos" +msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" -msgstr "Hash del Código de barras" +msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" -msgstr "Identificador único" +msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" -msgstr "Código de barras en uso" +msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" -msgstr "Se deben proporcionar elementos de línea" +msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" -msgstr "Se requiere ubicación de destino" +msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" -msgstr "Los valores del código de barras deben ser únicos" - -#: order/serializers.py:672 -msgid "Sale price currency" -msgstr "Moneda del precio de venta" +msgstr "" #: order/serializers.py:742 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:812 msgid "No shipment details provided" -msgstr "No se proporcionaron detalles de envío" +msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" -msgstr "Artículo en línea no está asociado con este pedido" +msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" -msgstr "La cantidad debe ser positiva" +msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" -msgstr "Introduzca números de serie para asignar" +msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" -msgstr "El envío ya ha sido enviado" +msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" -msgstr "El envío no está asociado con este pedido" +msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" -msgstr "No se han encontrado coincidencias para los siguientes números de serie" +msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" -msgstr "Los siguientes números de serie ya están asignados" +msgstr "" #: order/templates/order/delete_attachment.html:5 #: stock/templates/stock/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" -msgstr "¿Está seguro que desea eliminar este archivo adjunto?" +msgstr "" #: order/templates/order/order_base.html:33 msgid "Print purchase order report" -msgstr "Imprimir informe de orden de compra" +msgstr "" #: order/templates/order/order_base.html:35 #: order/templates/order/sales_order_base.html:45 msgid "Export order to file" -msgstr "Exportar pedido a archivo" +msgstr "" #: order/templates/order/order_base.html:41 #: order/templates/order/sales_order_base.html:54 msgid "Order actions" -msgstr "Acciones de pedido" +msgstr "" #: order/templates/order/order_base.html:45 #: order/templates/order/sales_order_base.html:58 msgid "Edit order" -msgstr "Editar pedido" +msgstr "" #: order/templates/order/order_base.html:56 msgid "Receive items" -msgstr "Recibir artículos" +msgstr "" #: order/templates/order/order_base.html:58 #: order/templates/order/purchase_order_detail.html:30 msgid "Receive Items" -msgstr "Recibir artículos" +msgstr "" #: order/templates/order/order_base.html:62 #: order/templates/order/sales_order_base.html:67 order/views.py:181 msgid "Complete Order" -msgstr "Completar pedido" +msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/sales_order_base.html:79 msgid "Order Reference" -msgstr "Referencia del pedido" +msgstr "" #: order/templates/order/order_base.html:89 #: order/templates/order/sales_order_base.html:84 msgid "Order Description" -msgstr "Descripción del pedido" +msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 msgid "Order Status" -msgstr "Estado del pedido" +msgstr "" #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:128 msgid "Completed Line Items" -msgstr "Ítems de línea completados" +msgstr "" #: order/templates/order/order_base.html:130 #: order/templates/order/sales_order_base.html:134 #: order/templates/order/sales_order_base.html:144 msgid "Incomplete" -msgstr "Incompleto" +msgstr "" #: order/templates/order/order_base.html:149 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" -msgstr "Emitido" +msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" -msgstr "Modificar orden de compra" +msgstr "" #: order/templates/order/order_cancel.html:8 msgid "Cancelling this order means that the order and line items will no longer be editable." -msgstr "Cancelar este pedido significa que la orden y los elementos de línea ya no serán editables." +msgstr "" #: order/templates/order/order_complete.html:7 msgid "Mark this order as complete?" -msgstr "Marcar pedido como completado?" +msgstr "" #: order/templates/order/order_complete.html:10 msgid "This order has line items which have not been marked as received." -msgstr "Este pedido tiene artículos de línea que no han sido marcados como recibidos." +msgstr "" #: order/templates/order/order_complete.html:11 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Completar este pedido significa que los artículos de orden y línea ya no serán editables." +msgstr "" #: order/templates/order/order_issue.html:8 msgid "After placing this purchase order, line items will no longer be editable." -msgstr "Después de realizar esta orden de compra, los artículos de línea ya no serán editables." +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 "Existen errores en los datos enviados" +msgstr "" #: 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 "Enviar selecciones" +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 "Fila" +msgstr "" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" -msgstr "Seleccionar Parte de Proveedor" +msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" -msgstr "Eliminar fila" +msgstr "" #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" -msgstr "Volver a Pedidos" +msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" -msgstr "Subir archivo para orden de compra" +msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "Paso %(step)s de %(count)s" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." -msgstr "El pedido ya ha sido procesado. Los archivos no se pueden cargar." +msgstr "" #: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" -msgstr "Paso 1 de 2 - Seleccionar Proveedores de Piezas" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" -msgstr "Seleccionar proveedores" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" -msgstr "Ninguna pieza comprable seleccionada" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" -msgstr "Seleccionar Proveedor" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 msgid "No price" -msgstr "Sin precio" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" -msgstr "Seleccione un proveedor para %(name)s" +msgstr "" #: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" -msgstr "Eliminar parte" +msgstr "" #: order/templates/order/order_wizard/select_pos.html:8 msgid "Step 2 of 2 - Select Purchase Orders" -msgstr "Paso 2 de 2 - Seleccione las órdenes de compra" +msgstr "" #: order/templates/order/order_wizard/select_pos.html:12 msgid "Select existing purchase orders, or create new orders." -msgstr "Seleccione los pedidos de compra existentes, o cree nuevos pedidos." +msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" -msgstr "Artículos" +msgstr "" #: order/templates/order/order_wizard/select_pos.html:32 msgid "Select Purchase Order" -msgstr "Seleccionar Orden de Compra" +msgstr "" #: order/templates/order/order_wizard/select_pos.html:45 #, python-format msgid "Create new purchase order for %(name)s" -msgstr "Crear nueva orden de compra para %(name)s" +msgstr "" #: order/templates/order/order_wizard/select_pos.html:68 #, python-format msgid "Select a purchase order for %(name)s" -msgstr "Seleccione una orden de compra para %(name)s" +msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" -msgstr "Línea de pedido" +msgstr "" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" -msgstr "Stock Recibido" +msgstr "" #: order/templates/order/purchase_order_detail.html:17 msgid "Purchase Order Items" -msgstr "Comprar artículos de orden" +msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" -msgstr "Añadir artículo de línea" +msgstr "" #: order/templates/order/purchase_order_detail.html:29 msgid "Receive selected items" -msgstr "Recibir elementos seleccionados" +msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" -msgstr "Articulos Recibidos" +msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" -msgstr "Notas del pedido" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" -msgstr "Imprimir informes de pedidos" +msgstr "" #: order/templates/order/sales_order_base.html:43 msgid "Print sales order report" -msgstr "Imprimir reporte de orden de venta" +msgstr "" #: order/templates/order/sales_order_base.html:47 msgid "Print packing list" -msgstr "Imprimir lista de empaquetado" +msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" -msgstr "Ordenes de venta completas" +msgstr "" #: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" -msgstr "Esta orden de venta no ha sido completamente asignada" +msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" -msgstr "Referencia del cliente" +msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "Envíos completados" +msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" -msgstr "Editar orden de venta" +msgstr "" #: order/templates/order/sales_order_cancel.html:8 #: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" -msgstr "Advertencia" +msgstr "" #: order/templates/order/sales_order_cancel.html:9 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Cancelar esta orden significa que la orden ya no será editable." +msgstr "" #: order/templates/order/sales_order_detail.html:17 msgid "Sales Order Items" -msgstr "Artículos de Pedidos de Venta" +msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" -msgstr "Envíos pendientes" +msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" -msgstr "Acciones" +msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" -msgstr "Nuevo Envío" +msgstr "" #: order/views.py:99 msgid "Cancel Order" -msgstr "Cancelar orden" +msgstr "" #: order/views.py:108 order/views.py:134 msgid "Confirm order cancellation" -msgstr "Confirmar Cancelación de Orden" +msgstr "" #: order/views.py:111 order/views.py:137 msgid "Order cannot be cancelled" -msgstr "El pedido no puede ser cancelado" +msgstr "" #: order/views.py:125 msgid "Cancel sales order" -msgstr "Cancelar orden de venta" +msgstr "" #: order/views.py:151 msgid "Issue Order" -msgstr "Emitir pedido" +msgstr "" #: order/views.py:160 msgid "Confirm order placement" -msgstr "Confirmar colocación del pedido" +msgstr "" #: order/views.py:170 msgid "Purchase order issued" -msgstr "Órdenes de compra emitidas" +msgstr "" #: order/views.py:197 msgid "Confirm order completion" -msgstr "Confirmar la finalización del pedido" +msgstr "" #: order/views.py:208 msgid "Purchase order completed" -msgstr "La compra se ha completado" +msgstr "" #: order/views.py:245 msgid "Match Supplier Parts" -msgstr "Coincidir Piezas de Proveedor" +msgstr "" #: order/views.py:489 msgid "Update prices" -msgstr "Actualizar precios" +msgstr "" #: order/views.py:747 #, python-brace-format msgid "Ordered {n} parts" -msgstr "{n} partes pedidas" +msgstr "" #: order/views.py:858 msgid "Sales order not found" -msgstr "Orden de venta no encontrada" +msgstr "" #: order/views.py:864 msgid "Price not found" -msgstr "Precio no encontrado" +msgstr "" #: order/views.py:867 #, python-brace-format msgid "Updated {part} unit-price to {price}" -msgstr "Actualizado el precio unitario de {part} a {price}" +msgstr "" #: order/views.py:872 #, 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}" +msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" -msgstr "Válido" +msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" -msgstr "Validación de Lista de Materiales" +msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" -msgstr "Esta opción debe ser seleccionada" +msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" -msgstr "Debe ser mayor que 0" +msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" -msgstr "Debe ser una cantidad válida" +msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" -msgstr "Especificar ubicación para el stock inicial de piezas" +msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" -msgstr "Este campo es obligatorio" +msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" -msgstr "Ubicación Predeterminada" +msgstr "" #: part/bom.py:126 templates/email/low_stock_notification.html:17 msgid "Total Stock" -msgstr "Inventario Total" +msgstr "" #: part/bom.py:127 part/templates/part/part_base.html:189 msgid "Available Stock" -msgstr "Stock Disponible" +msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" -msgstr "En pedido" +msgstr "" #: part/forms.py:84 msgid "Select part category" -msgstr "Definir Categoría de Parte" +msgstr "" #: part/forms.py:121 msgid "Add parameter template to same level categories" -msgstr "Añadir plantilla de parámetro a las categorías del mismo nivel" +msgstr "" #: part/forms.py:125 msgid "Add parameter template to all categories" -msgstr "Añadir plantilla de parámetro a todas las categorías" +msgstr "" #: part/forms.py:145 msgid "Input quantity for price calculation" -msgstr "Cantidad de entrada para el cálculo del precio" +msgstr "" #: part/models.py:113 msgid "Default location for parts in this category" -msgstr "Ubicación predeterminada para partes de esta categoría" +msgstr "" #: part/models.py:116 msgid "Default keywords" -msgstr "Palabras clave predeterminadas" +msgstr "" #: part/models.py:116 msgid "Default keywords for parts in this category" -msgstr "Palabras clave por defecto para partes en esta categoría" +msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "Categoría de parte" +msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" -msgstr "Categorías de parte" +msgstr "" #: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 @@ -4138,499 +4232,502 @@ msgstr "Categorías de parte" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" -msgstr "Partes" +msgstr "" #: part/models.py:460 msgid "Invalid choice for parent part" -msgstr "Opción no válida para la parte principal" +msgstr "" #: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "La parte '{p1}' se utiliza en BOM para '{p2}' (recursivo)" +msgstr "" #: part/models.py:682 msgid "Next available serial numbers are" -msgstr "Próximos números de serie disponibles son" +msgstr "" #: part/models.py:686 msgid "Next available serial number is" -msgstr "El siguiente número de serie disponible es" +msgstr "" #: part/models.py:691 msgid "Most recent serial number is" -msgstr "El número de serie más reciente es" +msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" -msgstr "IPN duplicado no permitido en la configuración de partes" +msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" -msgstr "Nombre de la pieza" +msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" -msgstr "Es plantilla" +msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" -msgstr "¿Es esta parte una parte de la plantilla?" +msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" -msgstr "¿Es esta parte una variante de otra parte?" +msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" -msgstr "Variante de" +msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" -msgstr "Descripción de la pieza" +msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" -msgstr "Palabras claves" +msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" -msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda" +msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" -msgstr "Categoría" +msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" -msgstr "Categoría de parte" +msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" -msgstr "IPN" +msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" -msgstr "Número de parte interna" +msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" -msgstr "Revisión de parte o número de versión" +msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" -msgstr "Revisión" +msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" -msgstr "¿Dónde se almacena este elemento normalmente?" +msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" -msgstr "Proveedor por defecto" +msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" -msgstr "Parte de proveedor predeterminada" +msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" -msgstr "Expiración por defecto" +msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" -msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" +msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" -msgstr "Stock mínimo" +msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" -msgstr "Nivel mínimo de stock permitido" +msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" -msgstr "Unidades de mantenimiento de stock para esta parte" +msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" -msgstr "¿Se puede construir esta pieza a partir de otras piezas?" +msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" -msgstr "¿Se puede utilizar esta pieza para construir otras partes?" - -#: part/models.py:972 -msgid "Does this part have tracking for unique items?" -msgstr "¿Esta parte tiene seguimiento de objetos únicos?" +msgstr "" #: part/models.py:977 -msgid "Can this part be purchased from external suppliers?" -msgstr "¿Se puede comprar esta pieza a proveedores externos?" +msgid "Does this part have tracking for unique items?" +msgstr "" #: part/models.py:982 -msgid "Can this part be sold to customers?" -msgstr "¿Se puede vender esta pieza a los clientes?" +msgid "Can this part be purchased from external suppliers?" +msgstr "" #: part/models.py:987 -msgid "Is this part active?" -msgstr "¿Está activa esta parte?" +msgid "Can this part be sold to customers?" +msgstr "" #: part/models.py:992 -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?" +msgid "Is this part active?" +msgstr "" #: part/models.py:997 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" -msgstr "Notas de parte - soporta formato Markdown" - -#: part/models.py:1000 -msgid "BOM checksum" -msgstr "BOM checksum" - -#: part/models.py:1000 -msgid "Stored BOM checksum" -msgstr "Suma de control BOM almacenada" - -#: part/models.py:1003 -msgid "BOM checked by" -msgstr "BOM comprobado por" +msgstr "" #: part/models.py:1005 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:1005 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1008 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1010 msgid "BOM checked date" -msgstr "Fecha BOM comprobada" +msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" -msgstr "Creación de Usuario" +msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" -msgstr "Vender múltiples" +msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" -msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables" +msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" -msgstr "Ya existe una prueba con este nombre para esta parte" +msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" -msgstr "Nombre de prueba" +msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" -msgstr "Introduzca un nombre para la prueba" +msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" -msgstr "Descripción de prueba" - -#: part/models.py:2457 -msgid "Enter description for this test" -msgstr "Introduce la descripción para esta prueba" - -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 -msgid "Required" -msgstr "Requerido" - -#: part/models.py:2463 -msgid "Is this test required to pass?" -msgstr "¿Es necesario pasar esta prueba?" - -#: part/models.py:2468 templates/js/translated/part.js:1826 -msgid "Requires Value" -msgstr "Requiere valor" - -#: part/models.py:2469 -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:2474 templates/js/translated/part.js:1833 -msgid "Requires Attachment" -msgstr "Adjunto obligatorio" - -#: part/models.py:2475 -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?" +msgstr "" #: part/models.py:2486 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 +msgid "Required" +msgstr "" + +#: part/models.py:2492 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:2497 templates/js/translated/part.js:1848 +msgid "Requires Value" +msgstr "" + +#: part/models.py:2498 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:2503 templates/js/translated/part.js:1855 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:2504 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" -msgstr "Carácter no válido en el nombre de la plantilla ({c})" +msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" -msgstr "El nombre de parámetro en la plantilla tiene que ser único" +msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" -msgstr "Nombre de Parámetro" +msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" -msgstr "Unidad del Parámetro" +msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" -msgstr "Parte principal" +msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" -msgstr "Plantilla de parámetro" +msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" -msgstr "Data" +msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" -msgstr "Valor del parámetro" +msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" -msgstr "Valor predeterminado" +msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" -msgstr "Valor de parámetro por defecto" +msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" -msgstr "ID de Parte" +msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" -msgstr "Seleccionar parte principal" +msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" -msgstr "Sub parte" +msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" -msgstr "Seleccionar parte a utilizar en BOM" +msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" -msgstr "Cantidad del artículo en BOM" +msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" -msgstr "Opcional" +msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" -msgstr "Este elemento BOM es opcional" +msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" -msgstr "Exceso" +msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)" +msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" -msgstr "Referencia de artículo de BOM" +msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" -msgstr "Notas del artículo de BOM" +msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" -msgstr "Checksum" +msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" -msgstr "Suma de comprobación de la línea en BOM" +msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" -msgstr "Heredado" +msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "Este artículo BOM es heredado por BOMs para partes variantes" +msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" -msgstr "Permitir variantes" +msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM" +msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" -msgstr "La cantidad debe ser un valor entero para las partes rastreables" +msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" -msgstr "Debe especificar la subparte" +msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" -msgstr "Ítem de BOM sustituto" +msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" -msgstr "La parte sustituta no puede ser la misma que la parte principal" +msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" -msgstr "Artículo BOM superior" +msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" -msgstr "Sustituir parte" +msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" -msgstr "Parte 1" +msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" -msgstr "Parte 2" +msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" -msgstr "Seleccionar parte relacionada" +msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" -msgstr "Error al crear relación: compruebe que la parte no está relacionada con sí misma y que la relación es única" +msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" -msgstr "Seleccionar parte de la que copiar BOM" +msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" -msgstr "Eliminar Datos Existentes" +msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" -msgstr "Eliminar elementos BOM existentes antes de copiar" +msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" -msgstr "Incluye Heredado" +msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" -msgstr "Incluye elementos BOM que son heredados de partes con plantillas" +msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" -msgstr "Omitir filas no válidas" +msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" -msgstr "Activar esta opción para omitir filas inválidas" +msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" -msgstr "Limpiar BOM Existente" +msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" -msgstr "Varios resultados encontrados" +msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" -msgstr "No se encontraron partes coincidentes" +msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" -msgstr "La parte no está designada como componente" +msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" -msgstr "Cantidad no proporcionada" +msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" -msgstr "Cantidad no válida" +msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" -msgstr "Se requiere al menos un elemento BOM" +msgstr "" #: part/tasks.py:18 msgid "Low stock notification" -msgstr "Notificación por bajo stock" +msgstr "" #: part/tasks.py:19 #, python-brace-format @@ -4639,129 +4736,129 @@ msgstr "" #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." -msgstr "No tienes permiso para editar la lista de materiales." +msgstr "" #: part/templates/part/bom.html:15 #, python-format msgid "The BOM for %(part)s has changed, and must be validated.
" -msgstr "El BOM para %(part)s ha cambiado y debe ser validado.
" +msgstr "" #: part/templates/part/bom.html:17 #, python-format msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" -msgstr "El BOM para %(part)s fue revisado por última vez por %(checker)s el %(check_date)s" +msgstr "" #: part/templates/part/bom.html:21 #, python-format msgid "The BOM for %(part)s has not been validated." -msgstr "El BOM para %(part)s no ha sido validada." +msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" -msgstr "Acciones BOM" +msgstr "" #: part/templates/part/bom.html:34 msgid "Delete Items" -msgstr "Eliminar elementos" +msgstr "" #: part/templates/part/category.html:28 part/templates/part/category.html:32 msgid "You are subscribed to notifications for this category" -msgstr "Estás suscrito a las notificaciones de esta categoría" +msgstr "" #: part/templates/part/category.html:36 msgid "Subscribe to notifications for this category" -msgstr "Suscribirse a las notificaciones de esta categoría" +msgstr "" #: part/templates/part/category.html:42 msgid "Category Actions" -msgstr "Acciones de categoría" +msgstr "" #: part/templates/part/category.html:47 msgid "Edit category" -msgstr "Editar categoría" +msgstr "" #: part/templates/part/category.html:48 msgid "Edit Category" -msgstr "Editar Categoría" +msgstr "" #: part/templates/part/category.html:52 msgid "Delete category" -msgstr "Eliminar categoría" +msgstr "" #: part/templates/part/category.html:53 msgid "Delete Category" -msgstr "Eliminar Categoría" +msgstr "" #: part/templates/part/category.html:61 msgid "Create new part category" -msgstr "Crear nueva categoría de partes" +msgstr "" #: part/templates/part/category.html:62 msgid "New Category" -msgstr "Nueva Categoría" +msgstr "" #: part/templates/part/category.html:80 part/templates/part/category.html:93 msgid "Category Path" -msgstr "Ruta de Categoría" +msgstr "" #: part/templates/part/category.html:94 msgid "Top level part category" -msgstr "Categoría de partes de nivel superior" +msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "Subcategorías" +msgstr "" #: part/templates/part/category.html:119 msgid "Parts (Including subcategories)" -msgstr "Partes (incluyendo subcategorías)" +msgstr "" #: part/templates/part/category.html:157 msgid "Create new part" -msgstr "Crear nueva parte" +msgstr "" #: part/templates/part/category.html:158 templates/js/translated/bom.js:365 msgid "New Part" -msgstr "Nueva Parte" +msgstr "" #: part/templates/part/category.html:172 msgid "Set category" -msgstr "Definir categoría" +msgstr "" #: part/templates/part/category.html:172 msgid "Set Category" -msgstr "Definir Categoría" +msgstr "" #: part/templates/part/category.html:176 msgid "Print Labels" -msgstr "Imprimir Etiquetas" +msgstr "" #: part/templates/part/category.html:178 msgid "Export" -msgstr "Exportar" +msgstr "" #: part/templates/part/category.html:178 msgid "Export Data" -msgstr "Exportar Datos" +msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" -msgstr "Parámetros de Parte" - -#: part/templates/part/category.html:285 -msgid "Create Part Category" -msgstr "Crear Categoría de Parte" - -#: part/templates/part/category.html:305 -msgid "Create Part" -msgstr "Crear Parte" - -#: part/templates/part/category.html:308 -msgid "Create another part after this one" msgstr "" #: part/templates/part/category.html:309 +msgid "Create Part Category" +msgstr "" + +#: part/templates/part/category.html:329 +msgid "Create Part" +msgstr "" + +#: part/templates/part/category.html:332 +msgid "Create another part after this one" +msgstr "" + +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4799,737 +4896,711 @@ msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "Importar Partes" +msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" -msgstr "Duplicar Parte" +msgstr "" #: part/templates/part/copy_part.html:10 #, python-format msgid "Make a copy of part '%(full_name)s'." -msgstr "Hacer una copia de la parte '%(full_name)s'." +msgstr "" #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "Posibles Partes coincidentes" +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 "La nueva parte puede ser un duplicado de estas partes existentes" +msgstr "" #: part/templates/part/create_part.html:17 #, python-format msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" -msgstr "%(full_name)s - %(desc)s (%(match_per)s%% coincidencia)" +msgstr "" #: part/templates/part/detail.html:20 msgid "Part Stock" -msgstr "Stock de parte" +msgstr "" #: part/templates/part/detail.html:52 msgid "Part Test Templates" -msgstr "Plantillas de prueba de parte" +msgstr "" #: part/templates/part/detail.html:57 msgid "Add Test Template" -msgstr "Añadir Plantilla de Prueba" +msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" -msgstr "Asignaciones de órdenes de venta" +msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" -msgstr "Variantes de Parte" +msgstr "" + +#: part/templates/part/detail.html:155 +msgid "Create new variant" +msgstr "" #: part/templates/part/detail.html:156 -msgid "Create new variant" -msgstr "Crear nueva variante" - -#: part/templates/part/detail.html:157 msgid "New Variant" -msgstr "Nueva Variante" +msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" -msgstr "Añadir nuevo parámetro" +msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" -msgstr "Partes relacionadas" +msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" -msgstr "Añadir Relacionado" +msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" -msgstr "Lista de Materiales" +msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" -msgstr "Exportar acciones" +msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" -msgstr "Exportar BOM" +msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" -msgstr "Imprimir informe BOM" +msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" -msgstr "Subir BOM" +msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" -msgstr "Copiar BOM" +msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" -msgstr "Validar BOM" +msgstr "" + +#: part/templates/part/detail.html:273 +msgid "New BOM Item" +msgstr "" #: part/templates/part/detail.html:274 -msgid "New BOM Item" -msgstr "Nuevo Item en el BOM" - -#: part/templates/part/detail.html:275 msgid "Add BOM Item" -msgstr "Añadir artículo al BOM" +msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" -msgstr "Ensamblajes" +msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" -msgstr "Construcción de partes" +msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" -msgstr "Construir adjudicaciones de pedidos" +msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" -msgstr "Proveedores de piezas" +msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" -msgstr "Fabricantes de piezas" +msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" -msgstr "Eliminar partes del fabricante" +msgstr "" + +#: part/templates/part/detail.html:595 +msgid "Delete selected BOM items?" +msgstr "" #: part/templates/part/detail.html:596 -msgid "Delete selected BOM items?" -msgstr "¿Eliminar elementos BOM seleccionados?" - -#: part/templates/part/detail.html:597 msgid "All selected BOM items will be deleted" -msgstr "Todos los elementos BOM seleccionados serán eliminados" +msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" -msgstr "Crear artículo para el BOM" +msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" -msgstr "Partes relacionadas" +msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" -msgstr "Añadir artículos relacionados" +msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" -msgstr "Añadir plantilla de resultados de prueba" +msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" -msgstr "Precio de unidad de compra - %(currency)s" +msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" -msgstr "Diferencia entre precio y costo unitario - %(currency)s" +msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" -msgstr "Costo de Unidad de Proveedor - %(currency)s" +msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" -msgstr "Precio unitario - %(currency)s" +msgstr "" #: 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 "Faltan selecciones para las siguientes columnas requeridas" +msgstr "" #: 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 "Se han encontrado selecciones duplicadas, vea a continuación. Arreglarlas y vuelva a intentar enviarlas." +msgstr "" #: part/templates/part/import_wizard/ajax_match_fields.html:28 -#: part/templates/part/import_wizard/match_fields.html:35 #: templates/patterns/wizard/match_fields.html:34 msgid "File Fields" -msgstr "Campos de archivo" +msgstr "" #: part/templates/part/import_wizard/ajax_match_fields.html:35 -#: part/templates/part/import_wizard/match_fields.html:42 #: templates/patterns/wizard/match_fields.html:41 msgid "Remove column" -msgstr "Eliminar columna" +msgstr "" #: part/templates/part/import_wizard/ajax_match_fields.html:53 -#: part/templates/part/import_wizard/match_fields.html:60 #: templates/patterns/wizard/match_fields.html:59 msgid "Duplicate selection" -msgstr "Duplicar selección" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." -msgstr "Privilegios insuficientes." +msgstr "" #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "Volver a los artículos" +msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "Importar artículos desde archivo" +msgstr "" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "Listado de artículos" +msgstr "" #: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 msgid "You are subscribed to notifications for this part" -msgstr "Estás suscrito a las notificaciones de este artículo" +msgstr "" #: part/templates/part/part_base.html:35 msgid "Subscribe to notifications for this part" -msgstr "Suscríbete a las notificaciones de este artículo" +msgstr "" #: part/templates/part/part_base.html:43 #: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:34 msgid "Barcode actions" -msgstr "Acciones para código de barras" +msgstr "" #: part/templates/part/part_base.html:46 #: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:36 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "Mostrar código QR" +msgstr "" #: part/templates/part/part_base.html:49 #: stock/templates/stock/item_base.html:57 #: stock/templates/stock/location.html:38 msgid "Print Label" -msgstr "Imprimir etiqueta" +msgstr "" #: part/templates/part/part_base.html:55 msgid "Show pricing information" -msgstr "Mostrar información de precios" +msgstr "" #: part/templates/part/part_base.html:60 #: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:47 msgid "Stock actions" -msgstr "Acciones de stock" +msgstr "" #: part/templates/part/part_base.html:67 msgid "Count part stock" -msgstr "Contar stock de piezas" +msgstr "" #: part/templates/part/part_base.html:73 msgid "Transfer part stock" -msgstr "Transferir stock de piezas" +msgstr "" #: part/templates/part/part_base.html:88 msgid "Part actions" -msgstr "Acciones para piezas" +msgstr "" #: part/templates/part/part_base.html:91 msgid "Duplicate part" -msgstr "Duplicar pieza" +msgstr "" #: part/templates/part/part_base.html:94 msgid "Edit part" -msgstr "Editar pieza" +msgstr "" #: part/templates/part/part_base.html:97 msgid "Delete part" -msgstr "Eliminar pieza" +msgstr "" #: part/templates/part/part_base.html:116 msgid "Part is a template part (variants can be made from this part)" -msgstr "La pieza es una pieza de plantilla (las variantes se pueden hacer a partir de esta pieza)" +msgstr "" #: part/templates/part/part_base.html:120 msgid "Part can be assembled from other parts" -msgstr "La pieza puede ser ensamblada desde otras piezas" +msgstr "" #: part/templates/part/part_base.html:124 msgid "Part can be used in assemblies" -msgstr "La pieza puede ser usada en ensamblajes" +msgstr "" #: part/templates/part/part_base.html:128 msgid "Part stock is tracked by serial number" -msgstr "El stock de esta pieza está rastreado por número de serie" +msgstr "" #: part/templates/part/part_base.html:132 msgid "Part can be purchased from external suppliers" -msgstr "La pieza puede ser comprada de proveedores externos" +msgstr "" #: part/templates/part/part_base.html:136 msgid "Part can be sold to customers" -msgstr "La pieza puede ser vendida a clientes" +msgstr "" #: part/templates/part/part_base.html:142 #: part/templates/part/part_base.html:150 msgid "Part is virtual (not a physical part)" -msgstr "La pieza es virtual (no una pieza física)" +msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" -msgstr "Inactivo" +msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" -msgstr "Mostrar Detalles de Parte" +msgstr "" #: part/templates/part/part_base.html:177 #, python-format msgid "This part is a variant of %(link)s" -msgstr "Esta parte es una variante de %(link)s" +msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" -msgstr "En Stock" +msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "Requerido para construir pedidos" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "Requerido para Pedidos de Venta" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" -msgstr "Puede construir" +msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" -msgstr "En construcción" +msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" -msgstr "Nivel mínimo de stock" +msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" -msgstr "Último Número Serial" +msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" -msgstr "Buscar número de serie" +msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" -msgstr "Calcular" +msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" -msgstr "No se encontraron imágenes coincidentes" +msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" -msgstr "Ocultar Detalles de la Parte" +msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" -msgstr "Precios del Proveedor" +msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" -msgstr "Coste Unitario" +msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" -msgstr "Costo Total" +msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" -msgstr "Ningún precio de proveedor disponible" +msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" -msgstr "Precios BOM" +msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" -msgstr "Precio de Compra Unitario" +msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" -msgstr "Precio total de compra" +msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" -msgstr "Nota: los precios BOM están incompletos para esta parte" +msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" -msgstr "No hay precios BOM disponibles" +msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" -msgstr "Precio Interno" +msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." -msgstr "No hay información de precios disponible para esta parte." +msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" -msgstr "Variantes" +msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "Usado en" +msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" -msgstr "Plantillas de Prueba" +msgstr "" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" -msgstr "Seleccionar de imágenes existentes" +msgstr "" #: part/templates/part/partial_delete.html:9 #, python-format msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n" "
Disable the \"Active\" part attribute and re-try.\n" " " -msgstr "Parte '%(full_name)s' no se puede eliminar ya que todavía está marcada como activa.\n" -"
Desactiva el atributo \"Activo\" y vuelve a intentarlo.\n" -" " +msgstr "" #: part/templates/part/partial_delete.html:17 #, python-format msgid "Are you sure you want to delete part '%(full_name)s'?" -msgstr "¿Está seguro que desea eliminar la parte '%(full_name)s'?" +msgstr "" #: part/templates/part/partial_delete.html:22 #, python-format msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated" -msgstr "Esta parte se utiliza en BOMs para otras %(count)s partes. Si eliminas esta parte, se actualizarán los BOMs de las siguientes partes" +msgstr "" #: part/templates/part/partial_delete.html:32 #, python-format msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:" -msgstr "Hay %(count)s entradas de stock definidas para esta parte. Si elimina esta parte, también se eliminarán las siguientes entradas de stock:" +msgstr "" #: part/templates/part/partial_delete.html:43 #, python-format msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:" -msgstr "Hay %(count)s fabricantes definidos para esta parte. Si la elimina, también se eliminarán las siguientes partes del fabricante:" +msgstr "" #: part/templates/part/partial_delete.html:54 #, python-format msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:" -msgstr "Hay %(count)s proveedores definidos para esta parte. Si la elimina, también se eliminarán:" +msgstr "" #: part/templates/part/partial_delete.html:65 #, python-format msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." -msgstr "Hay %(count)s partes únicas registradas para '%(full_name)s'. Al eliminar esta parte se eliminará permanentemente esta información de seguimiento." +msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" -msgstr "Rangos de precio" +msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" -msgstr "Mostrar coste del proveedor" +msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" -msgstr "Mostrar precio de compra" +msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" -msgstr "Mostrar coste de BOM" +msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" -msgstr "Mostrar coste de venta" +msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" -msgstr "Mostrar precio de venta" +msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" -msgstr "Parámetros de cálculo" +msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" -msgstr "Coste de Proveedor" +msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" -msgstr "Ir a la vista general" +msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" -msgstr "Precio de Stock" +msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." -msgstr "No hay historial de precios de stock disponible para esta parte." +msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" -msgstr "Coste Interno" +msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" -msgstr "Añadir salto de precio interno" +msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" -msgstr "Coste BOM" +msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" -msgstr "Coste de Venta" +msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." -msgstr "No hay historial de precios de venta disponible para esta parte." +msgstr "" #: part/templates/part/set_category.html:9 msgid "Set category for the following parts" -msgstr "Establecer categoría para las siguientes partes" +msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" -msgstr "Sin Stock" +msgstr "" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:158 msgid "Low Stock" -msgstr "Bajo Stock" +msgstr "" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" -msgstr "Volver al BOM" +msgstr "" #: part/templates/part/upload_bom.html:13 msgid "Upload Bill of Materials" -msgstr "Cargar Lista de Materiales" +msgstr "" #: part/templates/part/upload_bom.html:19 msgid "BOM upload requirements" -msgstr "Requisitos de subida BOM" +msgstr "" #: part/templates/part/upload_bom.html:23 #: part/templates/part/upload_bom.html:90 msgid "Upload BOM File" -msgstr "Subir archivo BOM" +msgstr "" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "Enviar datos BOM" +msgstr "" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" -msgstr "Requisitos para subir BOM" +msgstr "" #: part/templates/part/upload_bom.html:39 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "El archivo BOM debe contener las columnas con nombre requeridos como se indica en el " +msgstr "" #: part/templates/part/upload_bom.html:39 msgid "BOM Upload Template" -msgstr "Plantilla de subida BOM" +msgstr "" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "Cada parte debe existir en la base de datos" +msgstr "" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "Crear nueva variante de pieza" +msgstr "" #: part/templates/part/variant_part.html:10 #, python-format msgid "Create a new variant of template '%(full_name)s'." -msgstr "Crear una nueva variante de la plantilla '%(full_name)s'." +msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" -msgstr "Base de datos desconocida" +msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" -msgstr "Definir Categoría de Parte" +msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" -msgstr "Establecer categoría para {n} partes" +msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" -msgstr "Coincidir Referencias" +msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" -msgstr "Ninguna" +msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" -msgstr "Código QR de Parte" +msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" -msgstr "Seleccionar Imagen de Parte" +msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" -msgstr "Imagen de parte actualizada" +msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" -msgstr "Imagen de parte no encontrada" +msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" -msgstr "Confirmar Eliminación de Parte" +msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" -msgstr "Parte fue eliminada" +msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" -msgstr "Precio de parte" +msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" -msgstr "Crear plantilla Parámetro de Parte" +msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" -msgstr "Crear plantilla Parámetro de Parte" +msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" -msgstr "Eliminar Plantilla de Parámetros de Parte" +msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" -msgstr "Editar Categoría de Parte" +msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" -msgstr "Eliminar Categoría de Parte" +msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" -msgstr "Categoría de parte eliminada" +msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" -msgstr "Crear plantilla de parámetro de categoría" +msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" -msgstr "Editar plantilla de parámetro de categoría" +msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" -msgstr "Eliminar plantilla de parámetro de categoría" - -#: part/views.py:1242 -msgid "Added new price break" -msgstr "Nuevo diferencial de precio añadido" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "Editar Diferencial de Precio Interno" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "Eliminar Diferencial de Precio Interno" +msgstr "" #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." @@ -5539,568 +5610,568 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" -msgstr "No se encontró autor" +msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" -msgstr "No se encontró fecha" +msgstr "" #: plugin/models.py:26 msgid "Plugin Configuration" -msgstr "Configuración del Plugin" +msgstr "" #: plugin/models.py:27 msgid "Plugin Configurations" -msgstr "Configuraciones del Plug-in" +msgstr "" #: plugin/models.py:32 msgid "Key" -msgstr "Clave" +msgstr "" #: plugin/models.py:33 msgid "Key of plugin" -msgstr "Clave del plugin" +msgstr "" #: plugin/models.py:41 msgid "PluginName of the plugin" -msgstr "Nombre del plugin" +msgstr "" #: plugin/models.py:47 msgid "Is the plugin active" -msgstr "Está activo el plugin" +msgstr "" #: plugin/models.py:182 msgid "Plugin" -msgstr "Plugin" +msgstr "" #: plugin/samples/integration/sample.py:42 msgid "Enable PO" -msgstr "Habilitar PO" +msgstr "" #: plugin/samples/integration/sample.py:43 msgid "Enable PO functionality in InvenTree interface" -msgstr "Habilitar la funcionalidad PO en la interfaz de InvenTree" +msgstr "" #: plugin/samples/integration/sample.py:48 msgid "API Key" -msgstr "Clave API" +msgstr "" #: plugin/samples/integration/sample.py:49 msgid "Key required for accessing external API" -msgstr "Clave necesaria para acceder a la API externa" +msgstr "" #: plugin/samples/integration/sample.py:52 msgid "Numerical" -msgstr "Numérico" +msgstr "" #: plugin/samples/integration/sample.py:53 msgid "A numerical setting" -msgstr "Una configuración numérica" +msgstr "" #: plugin/samples/integration/sample.py:58 msgid "Choice Setting" -msgstr "Configuración de Elección" +msgstr "" #: plugin/samples/integration/sample.py:59 msgid "A setting with multiple choices" -msgstr "Un ajuste con múltiples opciones" +msgstr "" #: plugin/serializers.py:49 msgid "Source URL" -msgstr "URL de origen" +msgstr "" #: plugin/serializers.py:50 msgid "Source for the package - this can be a custom registry or a VCS path" -msgstr "Fuente del paquete - puede ser un registro personalizado o una ruta VCS" +msgstr "" #: plugin/serializers.py:55 msgid "Package Name" -msgstr "Nombre de Paquete" +msgstr "" #: plugin/serializers.py:56 msgid "Name for the Plugin Package - can also contain a version indicator" -msgstr "Nombre del paquete Plug-in - también puede contener un indicador de versión" +msgstr "" #: plugin/serializers.py:59 msgid "Confirm plugin installation" -msgstr "Confirmar instalación del plugin" +msgstr "" #: plugin/serializers.py:60 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." -msgstr "Esto instalará este plug-in en la instancia actual. La instancia entrará en mantenimiento." +msgstr "" #: plugin/serializers.py:75 msgid "Installation not confirmed" -msgstr "Instalación no confirmada" +msgstr "" #: plugin/serializers.py:77 msgid "Either packagename of URL must be provided" -msgstr "Debe proporcionar cualquier nombre de paquete de la URL" +msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" -msgstr "Falta el archivo de plantilla '{filename}' o no existe" +msgid "Template file '{template}' is missing or does not exist" +msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" -msgstr "Nombre de la plantilla" +msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" -msgstr "Plantilla de informe" +msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" -msgstr "Descripción de la plantilla de informe" +msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" -msgstr "Número de revisión del informe (autoincremental)" +msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" -msgstr "Patrón para generar nombres de archivo" +msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" -msgstr "Plantilla de informe está habilitada" +msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "Filtros de consulta de Stock (lista separada por comas de pares clave=valor)" +msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" -msgstr "Incluye Pruebas Instaladas" +msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" -msgstr "Incluye resultados de prueba para artículos de stock instalados dentro del artículo ensamblado" +msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" -msgstr "Crear filtros" +msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" +msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" -msgstr "Filtros de partes" +msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" -msgstr "Filtros de búsqueda de partes (lista separada por comas de pares clave=valor" +msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" -msgstr "Filtros de búsqueda de orden de compra" +msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" -msgstr "Filtros de búsqueda de pedidos de ventas" +msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" -msgstr "Fragmento" +msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" -msgstr "Archivo de reporte snippet" +msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" -msgstr "Descripción de archivo de fragmento" +msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" -msgstr "Activo" +msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" -msgstr "Reportar archivo de activos" +msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" -msgstr "Descripción del archivo de activos" +msgstr "" #: report/templates/report/inventree_build_order_base.html:147 msgid "Required For" -msgstr "Requerido para" +msgstr "" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "Artículo Stock Informe de prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" -msgstr "Número de serie" +msgstr "" #: report/templates/report/inventree_test_report_base.html:88 msgid "Test Results" -msgstr "Resultados de la Prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" -msgstr "Prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" -msgstr "Resultado" +msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" -msgstr "Fecha" +msgstr "" #: report/templates/report/inventree_test_report_base.html:108 msgid "Pass" -msgstr "Pasada" +msgstr "" #: report/templates/report/inventree_test_report_base.html:110 msgid "Fail" -msgstr "Fallo" +msgstr "" #: report/templates/report/inventree_test_report_base.html:123 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "Elementos instalados" +msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" -msgstr "Serial" +msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" -msgstr "Cantidad requerida" +msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" -msgstr "Debe suministrarse una pieza válida" +msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" -msgstr "Fecha de Expiración" +msgstr "" #: stock/forms.py:75 stock/forms.py:199 msgid "Expiration date for this stock item" -msgstr "Fecha de caducidad para este artículo de stock" +msgstr "" #: stock/forms.py:78 msgid "Enter unique serial numbers (or leave blank)" -msgstr "Introduzca números de serie únicos (o deje en blanco)" +msgstr "" #: stock/forms.py:133 msgid "Destination for serialized stock (by default, will remain in current location)" -msgstr "Destino para el stock serializado (por defecto, permanecerá en la ubicación actual)" +msgstr "" #: stock/forms.py:135 msgid "Serial numbers" -msgstr "Números de serie" +msgstr "" #: stock/forms.py:135 msgid "Unique serial numbers (must match quantity)" -msgstr "Números de serie únicos (deben coincidir con la cantidad)" +msgstr "" #: stock/forms.py:137 stock/forms.py:171 msgid "Add transaction note (optional)" -msgstr "Añadir nota de transacción (opcional)" +msgstr "" #: stock/forms.py:169 msgid "Destination location for uninstalled items" -msgstr "Ubicación de destino para elementos desinstalados" +msgstr "" #: stock/forms.py:173 msgid "Confirm uninstall" -msgstr "Confirmar desinstalación" +msgstr "" #: stock/forms.py:173 msgid "Confirm removal of installed stock items" -msgstr "Confirmar la eliminación de los artículos de stock instalados" +msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" -msgstr "Propietario" +msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" -msgstr "Seleccionar Propietario" +msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" -msgstr "Ya existe un Stock con este número de serie" +msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" -msgstr "Tipo de pieza ('{pf}') debe ser {pe}" +msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" -msgstr "La cantidad debe ser 1 para el artículo con un número de serie" +msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" -msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1" +msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" -msgstr "El objeto no puede pertenecer a sí mismo" +msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" -msgstr "El elemento debe tener una referencia de construcción si is_building=True" +msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" -msgstr "La referencia de la construcción no apunta al mismo objeto de parte" +msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" -msgstr "Artículo de stock padre" +msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" -msgstr "Parte base" +msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" -msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock" +msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" -msgstr "Ubicación de Stock" +msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" -msgstr "¿Dónde se encuentra este artículo de stock?" +msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" -msgstr "Empaquetar este elemento de stock se almacena en" +msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" -msgstr "Instalado en" +msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" -msgstr "¿Está este elemento instalado en otro elemento?" +msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" -msgstr "Número de serie para este elemento" +msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" -msgstr "Código de lote para este artículo de stock" +msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" -msgstr "Cantidad de Stock" +msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" -msgstr "Build de origen" +msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" -msgstr "Build para este item de stock" +msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" -msgstr "Orden de compra de origen" +msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" -msgstr "Orden de compra para este artículo de stock" +msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" -msgstr "Orden de venta de destino" +msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" -msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha" +msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" -msgstr "Eliminar al agotar" +msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" -msgstr "Eliminar este artículo de stock cuando se agoten las existencias" +msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" -msgstr "Notas del artículo de stock" +msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" -msgstr "Precio de compra único en el momento de la compra" +msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" -msgstr "La parte no está establecida como rastreable" +msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" -msgstr "Cantidad debe ser un entero" +msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "La cantidad no debe exceder la cantidad disponible de existencias ({n})" +msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" -msgstr "Los números de serie deben ser una lista de enteros" +msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" -msgstr "La cantidad no coincide con los números de serie" +msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" -msgstr "Los números de serie ya existen: {exists}" +msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" -msgstr "Artículo de stock ha sido asignado a un pedido de venta" +msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" -msgstr "Artículo de stock está instalado en otro artículo" +msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" -msgstr "Artículo de stock contiene otros artículos" +msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" -msgstr "Artículo de stock ha sido asignado a un cliente" +msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" -msgstr "El artículo de stock está en producción" +msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" -msgstr "Stock serializado no puede ser combinado" +msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" -msgstr "Artículos de Stock Duplicados" +msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" -msgstr "Los artículos de stock deben referirse a la misma parte" +msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" -msgstr "Los artículos de stock deben referirse a la misma parte del proveedor" +msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" -msgstr "Los códigos de estado del stock deben coincidir" +msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" -msgstr "Stock no se puede mover porque no está en stock" +msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" -msgstr "Notas de entrada" +msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" -msgstr "Debe proporcionarse un valor para esta prueba" +msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" -msgstr "El archivo adjunto debe ser subido para esta prueba" +msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" -msgstr "Nombre del test" +msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" -msgstr "Resultado de la prueba" +msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" -msgstr "Valor de salida de prueba" +msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" -msgstr "Adjunto de resultados de prueba" +msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" -msgstr "Notas de prueba" +msgstr "" #: stock/serializers.py:173 msgid "Purchase price of this stock item" -msgstr "Precio de compra de este artículo de stock" - -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Moneda de compra de ítem de stock" +msgstr "" #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" -msgstr "Introduzca el número de elementos de stock para serializar" +msgstr "" #: stock/serializers.py:309 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" -msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})" +msgstr "" #: stock/serializers.py:315 msgid "Enter serial numbers for new items" -msgstr "Introduzca números de serie para nuevos elementos" +msgstr "" #: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030 msgid "Destination stock location" -msgstr "Ubicación de stock de destino" +msgstr "" #: stock/serializers.py:333 msgid "Optional note field" -msgstr "Campo de nota opcional" +msgstr "" #: stock/serializers.py:346 msgid "Serial numbers cannot be assigned to this part" -msgstr "Los números de serie no se pueden asignar a esta parte" +msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" -msgstr "Números de serie ya existen" +msgstr "" #: stock/serializers.py:405 msgid "Select stock item to install" @@ -6116,290 +6187,290 @@ msgstr "" #: stock/serializers.py:646 msgid "Part must be salable" -msgstr "La parte debe ser vendible" +msgstr "" #: stock/serializers.py:650 msgid "Item is allocated to a sales order" -msgstr "El artículo está asignado a una orden de venta" +msgstr "" #: stock/serializers.py:654 msgid "Item is allocated to a build order" -msgstr "El artículo está asignado a una orden de creación" +msgstr "" #: stock/serializers.py:684 msgid "Customer to assign stock items" -msgstr "Cliente para asignar elementos de stock" +msgstr "" #: stock/serializers.py:690 msgid "Selected company is not a customer" -msgstr "La empresa seleccionada no es un cliente" +msgstr "" #: stock/serializers.py:698 msgid "Stock assignment notes" -msgstr "Notas de asignación de stock" +msgstr "" #: stock/serializers.py:708 stock/serializers.py:938 msgid "A list of stock items must be provided" -msgstr "Debe proporcionarse una lista de artículos de stock" +msgstr "" #: stock/serializers.py:796 msgid "Stock merging notes" -msgstr "Notas de fusión de stock" +msgstr "" #: stock/serializers.py:801 msgid "Allow mismatched suppliers" -msgstr "Permitir proveedores no coincidentes" +msgstr "" #: stock/serializers.py:802 msgid "Allow stock items with different supplier parts to be merged" -msgstr "Permitir fusionar artículos de stock con diferentes piezas de proveedor" +msgstr "" #: stock/serializers.py:807 msgid "Allow mismatched status" -msgstr "Permitir estado no coincidente" +msgstr "" #: stock/serializers.py:808 msgid "Allow stock items with different status codes to be merged" -msgstr "Permitir fusionar elementos de stock con diferentes códigos de estado" +msgstr "" #: stock/serializers.py:818 msgid "At least two stock items must be provided" -msgstr "Debe proporcionar al menos dos artículos de stock" +msgstr "" #: stock/serializers.py:900 msgid "StockItem primary key value" -msgstr "Valor de clave primaria de Stock" +msgstr "" #: stock/serializers.py:928 msgid "Stock transaction notes" -msgstr "Notas de transacción de stock" +msgstr "" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "Información de Seguimiento de Stock" +msgstr "" #: stock/templates/stock/item.html:22 msgid "New Entry" -msgstr "Nueva Entrada" +msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" -msgstr "Elementos de Stock Hijos" +msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" -msgstr "Este artículo de stock no tiene ningún elemento secundario" +msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "Datos de Prueba" +msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" -msgstr "Informe de Prueba" +msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" -msgstr "Eliminar Datos de Prueba" +msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" -msgstr "Añadir Datos de Prueba" +msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" -msgstr "Elementos de Stock instalados" +msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" -msgstr "Instalar elemento de stock" +msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" -msgstr "Añadir Resultado de Prueba" +msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" -msgstr "Desvincular Código de Barras" +msgstr "" #: stock/templates/stock/item_base.html:44 msgid "Link Barcode" -msgstr "Vincular Código de Barras" +msgstr "" #: stock/templates/stock/item_base.html:46 templates/stock_table.html:21 msgid "Scan to Location" -msgstr "Escanear a la ubicación" +msgstr "" #: stock/templates/stock/item_base.html:54 msgid "Printing actions" -msgstr "Acciones de impresión" +msgstr "" #: stock/templates/stock/item_base.html:70 msgid "Stock adjustment actions" -msgstr "Acciones de ajuste de stock" +msgstr "" #: stock/templates/stock/item_base.html:74 #: stock/templates/stock/location.html:54 templates/stock_table.html:47 msgid "Count stock" -msgstr "Contar stock" +msgstr "" #: stock/templates/stock/item_base.html:77 templates/stock_table.html:45 msgid "Add stock" -msgstr "Añadir stock" +msgstr "" #: stock/templates/stock/item_base.html:80 templates/stock_table.html:46 msgid "Remove stock" -msgstr "Eliminar stock" +msgstr "" #: stock/templates/stock/item_base.html:83 msgid "Serialize stock" -msgstr "Serializar stock" +msgstr "" #: stock/templates/stock/item_base.html:87 #: stock/templates/stock/location.html:60 templates/stock_table.html:48 msgid "Transfer stock" -msgstr "Transferir stock" +msgstr "" #: stock/templates/stock/item_base.html:90 templates/stock_table.html:51 msgid "Assign to customer" -msgstr "Asignar a cliente" +msgstr "" #: stock/templates/stock/item_base.html:93 msgid "Return to stock" -msgstr "Regresar al stock" +msgstr "" #: stock/templates/stock/item_base.html:96 msgid "Uninstall stock item" -msgstr "Desinstalar artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:96 msgid "Uninstall" -msgstr "Desinstalar" +msgstr "" #: stock/templates/stock/item_base.html:100 msgid "Install stock item" -msgstr "Instalar elemento de stock" +msgstr "" #: stock/templates/stock/item_base.html:100 msgid "Install" -msgstr "Instalar" +msgstr "" #: stock/templates/stock/item_base.html:115 msgid "Convert to variant" -msgstr "Convertir a variante" +msgstr "" #: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "Duplicar artículo" +msgstr "" #: stock/templates/stock/item_base.html:120 msgid "Edit stock item" -msgstr "Elemento de stock editado" +msgstr "" #: stock/templates/stock/item_base.html:123 msgid "Delete stock item" -msgstr "Eliminar elemento de stock" +msgstr "" #: stock/templates/stock/item_base.html:161 msgid "previous page" -msgstr "página anterior" +msgstr "" #: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" -msgstr "Navegar al número de serie anterior" +msgstr "" #: stock/templates/stock/item_base.html:170 msgid "next page" -msgstr "página siguiente" +msgstr "" #: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" -msgstr "Navegar al siguiente número de serie" +msgstr "" #: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "Este ítem expiró el %(item.expiry_date)s" +msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" -msgstr "Expirado" +msgstr "" #: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "Este ítem expira el %(item.expiry_date)s" +msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" -msgstr "Desactualizado" +msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" -msgstr "Última actualización" +msgstr "" #: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" -msgstr "Último inventario" +msgstr "" #: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" -msgstr "Ningún inventario realizado" +msgstr "" #: stock/templates/stock/item_base.html:224 msgid "This stock item is in production and cannot be edited." -msgstr "Este artículo de stock está en producción y no puede ser editado." +msgstr "" #: stock/templates/stock/item_base.html:225 msgid "Edit the stock item from the build view." -msgstr "Editar el elemento de stock desde la vista de construcción." +msgstr "" #: stock/templates/stock/item_base.html:238 msgid "This stock item has not passed all required tests" -msgstr "Este artículo de stock no ha pasado todas las pruebas requeridas" +msgstr "" #: stock/templates/stock/item_base.html:246 msgid "This stock item is allocated to Sales Order" -msgstr "Este artículo de stock está asignado a la orden de venta" +msgstr "" #: stock/templates/stock/item_base.html:254 msgid "This stock item is allocated to Build Order" -msgstr "Este artículo de stock está asignado al orden de construcción" +msgstr "" #: stock/templates/stock/item_base.html:260 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "Este artículo de stock está serializado - tiene un número de serie único y la cantidad no se puede ajustar." +msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" -msgstr "Ubicación no establecida" +msgstr "" #: stock/templates/stock/item_base.html:308 msgid "Barcode Identifier" -msgstr "Identificador de Código de Barras" +msgstr "" #: stock/templates/stock/item_base.html:350 msgid "Parent Item" -msgstr "Elemento padre" +msgstr "" #: stock/templates/stock/item_base.html:368 msgid "No manufacturer set" -msgstr "Ningún fabricante establecido" +msgstr "" #: stock/templates/stock/item_base.html:393 msgid "Tests" -msgstr "Pruebas" +msgstr "" #: stock/templates/stock/item_base.html:411 msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "No estás en la lista de propietarios de este artículo. Este artículo de stock no puede ser editado." +msgstr "" #: stock/templates/stock/item_base.html:412 #: stock/templates/stock/location.html:118 @@ -6408,57 +6479,57 @@ msgstr "" #: stock/templates/stock/item_base.html:486 msgid "Edit Stock Status" -msgstr "Editar Estado del Stock" +msgstr "" #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" -msgstr "¿Está seguro que desea eliminar este elemento de stock?" +msgstr "" #: stock/templates/stock/item_delete.html:12 #, python-format msgid "This will remove %(qty)s units of %(full_name)s from stock." -msgstr "Esto eliminará %(qty)s unidades de %(full_name)s del stock." +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "Crear artículos serializados a partir de este artículo de stock." +msgstr "" #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "Seleccione la cantidad para serializar y números de serie únicos." +msgstr "" #: stock/templates/stock/location.html:40 msgid "Check-in Items" -msgstr "Objetos de Check-in" +msgstr "" #: stock/templates/stock/location.html:68 msgid "Location actions" -msgstr "Acciones de ubicación" +msgstr "" #: stock/templates/stock/location.html:70 msgid "Edit location" -msgstr "Editar ubicación" +msgstr "" #: stock/templates/stock/location.html:72 msgid "Delete location" -msgstr "Eliminar ubicación" +msgstr "" #: stock/templates/stock/location.html:81 msgid "Create new stock location" -msgstr "Crear nueva ubicación de stock" +msgstr "" #: stock/templates/stock/location.html:82 msgid "New Location" -msgstr "Nueva Ubicación" +msgstr "" #: stock/templates/stock/location.html:100 #: stock/templates/stock/location.html:106 msgid "Location Path" -msgstr "Ruta de Ubicación" +msgstr "" #: stock/templates/stock/location.html:107 msgid "Top level stock location" -msgstr "Ubicación de stock superior" +msgstr "" #: stock/templates/stock/location.html:113 msgid "Location Owner" @@ -6466,23 +6537,22 @@ msgstr "" #: stock/templates/stock/location.html:117 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "No estás en la lista de propietarios de esta ubicación. Esta ubicación de stock no puede ser editada." +msgstr "" #: stock/templates/stock/location.html:133 #: stock/templates/stock/location.html:180 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" -msgstr "Sub-ubicación" +msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" -msgstr "Ubicaciones de Stock" +msgstr "" #: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" -msgstr "¿Está seguro que desea eliminar esta ubicación?" +msgstr "" #: stock/templates/stock/location_delete.html:13 #, python-format @@ -6514,232 +6584,237 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "Cargando..." +msgstr "" #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "Seguimiento de Stock" +msgstr "" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" -msgstr "Asignaciones" +msgstr "" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "Elementos secundarios" +msgstr "" #: stock/templates/stock/stock_uninstall.html:8 msgid "The following stock items will be uninstalled" -msgstr "Se desinstalarán los siguientes elementos de stock" +msgstr "" #: stock/templates/stock/stockitem_convert.html:7 stock/views.py:631 msgid "Convert Stock Item" -msgstr "Convertir artículo de stock" +msgstr "" #: stock/templates/stock/stockitem_convert.html:8 #, python-format msgid "This stock item is current an instance of %(part)s" -msgstr "Este artículo de stock es actualmente una instancia de %(part)s" +msgstr "" #: stock/templates/stock/stockitem_convert.html:9 msgid "It can be converted to one of the part variants listed below." -msgstr "Puede ser convertido a una de las variantes de piezas listadas a continuación." +msgstr "" #: stock/templates/stock/stockitem_convert.html:14 msgid "This action cannot be easily undone" -msgstr "Esta acción no se puede deshacer fácilmente" +msgstr "" #: stock/templates/stock/tracking_delete.html:6 msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "¿Está seguro que desea eliminar este elemento de stock?" +msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" -msgstr "Editar ubicación de stock" +msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" -msgstr "El propietario es requerido (el control de propiedad está habilitado)" +msgstr "" #: stock/views.py:274 msgid "Stock Location QR code" -msgstr "Código QR de ubicación de stock" +msgstr "" #: stock/views.py:293 msgid "Return to Stock" -msgstr "Volver a Stock" +msgstr "" #: stock/views.py:302 msgid "Specify a valid location" -msgstr "Especifique una ubicación válida" +msgstr "" #: stock/views.py:313 msgid "Stock item returned from customer" -msgstr "Artículo de stock devuelto por el cliente" +msgstr "" #: stock/views.py:324 msgid "Delete All Test Data" -msgstr "Borrar todos los datos de prueba" +msgstr "" #: stock/views.py:341 msgid "Confirm test data deletion" -msgstr "Confirmar eliminación de datos de prueba" +msgstr "" #: stock/views.py:342 msgid "Check the confirmation box" -msgstr "Marque la casilla de confirmación" +msgstr "" #: stock/views.py:357 msgid "Stock Item QR Code" -msgstr "Código QR de Item de Stock" +msgstr "" #: stock/views.py:382 msgid "Uninstall Stock Items" -msgstr "Desinstalar artículos de stock" +msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" -msgstr "Confirmar ajuste de stock" +msgstr "" #: stock/views.py:490 msgid "Uninstalled stock items" -msgstr "Artículos de stock desinstalados" +msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" -msgstr "Editar artículo de stock" +msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" -msgstr "Crear nueva ubicación de stock" +msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" -msgstr "Crear nuevo artículo de stock" +msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" -msgstr "Duplicar artículo de stock" +msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" -msgstr "La cantidad no puede ser negativa" +msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" -msgstr "Eliminar ubicación de stock" +msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" -msgstr "Eliminar elemento de stock" +msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" -msgstr "Eliminar registro de stock" +msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" -msgstr "Editar registro de stock" +msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" -msgstr "Añadir entrada de seguimiento de stock" +msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" -msgstr "Permiso Denegado" +msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." -msgstr "No tiene permisos para ver esta página." +msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" -msgstr "Página No Encontrada" +msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" -msgstr "La página solicitada no existe" +msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" -msgstr "Error Interno Del Servidor" - -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" -msgstr "El servidor de InvenTree ha generado un error interno" +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 "Consulte el registro de errores en la interfaz de administración para más detalles" +msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" -msgstr "El Sitio está en Mantenimiento" +msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" -msgstr "El sitio está actualmente en mantenimiento y debería estar listo pronto!" +msgstr "" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "Índice" +msgstr "" #: templates/InvenTree/index.html:88 msgid "Subscribed Parts" -msgstr "Partes Suscritas" +msgstr "" #: templates/InvenTree/index.html:98 msgid "Subscribed Categories" -msgstr "Categorías Suscritas" +msgstr "" #: templates/InvenTree/index.html:108 msgid "Latest Parts" -msgstr "Últimas Partes" +msgstr "" #: templates/InvenTree/index.html:119 msgid "BOM Waiting Validation" -msgstr "Validación de BOM en espera" +msgstr "" #: templates/InvenTree/index.html:145 msgid "Recently Updated" -msgstr "Actualizado Recientemente" +msgstr "" #: templates/InvenTree/index.html:168 msgid "Depleted Stock" -msgstr "Stock Agotado" +msgstr "" + +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" #: templates/InvenTree/index.html:191 msgid "Expired Stock" -msgstr "Stock Caducado" +msgstr "" #: templates/InvenTree/index.html:202 msgid "Stale Stock" -msgstr "Stock Obsoleto" +msgstr "" #: templates/InvenTree/index.html:224 msgid "Build Orders In Progress" -msgstr "Pedidos en curso" +msgstr "" #: templates/InvenTree/index.html:235 msgid "Overdue Build Orders" -msgstr "Órdenes de construcción atrasadas" +msgstr "" #: templates/InvenTree/index.html:255 msgid "Outstanding Purchase Orders" -msgstr "Órdenes de Compra Pendientes" +msgstr "" #: templates/InvenTree/index.html:266 msgid "Overdue Purchase Orders" -msgstr "Pedidos de Compra Atrasados" +msgstr "" #: templates/InvenTree/index.html:286 msgid "Outstanding Sales Orders" -msgstr "Pedidos de Venta Pendientes" +msgstr "" #: templates/InvenTree/index.html:297 msgid "Overdue Sales Orders" -msgstr "Pedidos de Venta Atrasados" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -6773,16 +6848,16 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:51 #: templates/InvenTree/settings/settings.html:314 msgid "ID" -msgstr "Identificación" +msgstr "" #: templates/InvenTree/notifications/notifications.html:57 msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" -msgstr "Mensaje" +msgstr "" #: templates/InvenTree/notifications/notifications.html:94 #: templates/InvenTree/notifications/notifications.html:150 @@ -6807,535 +6882,539 @@ msgstr "" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "Resultados de Búsqueda" +msgstr "" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "Ajustes de Código de Barras" +msgstr "" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "Configuración de Pedido de Trabajo" +msgstr "" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "Ajustes de Categoría" +msgstr "" #: templates/InvenTree/settings/currencies.html:8 msgid "Currency Settings" -msgstr "Configuración de Moneda" +msgstr "" #: templates/InvenTree/settings/currencies.html:19 msgid "Base Currency" -msgstr "Moneda Base" +msgstr "" #: templates/InvenTree/settings/currencies.html:24 msgid "Exchange Rates" -msgstr "Tipos de Cambio" +msgstr "" #: templates/InvenTree/settings/currencies.html:38 msgid "Last Update" -msgstr "Última Actualización" +msgstr "" #: templates/InvenTree/settings/currencies.html:44 msgid "Never" -msgstr "Nunca" +msgstr "" #: templates/InvenTree/settings/currencies.html:49 msgid "Update Now" -msgstr "Actualizar Ahora" +msgstr "" #: templates/InvenTree/settings/global.html:9 msgid "Server Settings" -msgstr "Configuración del Servidor" +msgstr "" #: templates/InvenTree/settings/login.html:9 #: templates/InvenTree/settings/sidebar.html:31 msgid "Login Settings" -msgstr "Configuración de Inicio de Sesión" +msgstr "" #: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5 msgid "Signup" -msgstr "Registrarse" +msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" -msgstr "Ajustes" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "Direcciones URL" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format msgid "The Base-URL for this plugin is %(base)s." -msgstr "La URL base para este plugin es %(base)s." +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:23 msgid "Open in new tab" -msgstr "Abrir en una pestaña nueva" +msgstr "" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "Ajustes de Parte" +msgstr "" #: templates/InvenTree/settings/part.html:44 msgid "Part Import" -msgstr "Importar Parte" +msgstr "" #: templates/InvenTree/settings/part.html:48 msgid "Import Part" -msgstr "Importar Parte" +msgstr "" #: templates/InvenTree/settings/part.html:62 msgid "Part Parameter Templates" -msgstr "Plantillas de Parámetros de Partes" +msgstr "" #: templates/InvenTree/settings/plugin.html:10 msgid "Plugin Settings" -msgstr "Ajustes del Plugin" +msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." -msgstr "Cambiar la configuración de abajo requiere reiniciar inmediatamente InvenTree. No lo cambie mientras esté en uso activo." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" -msgstr "Plugins" +msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" -msgstr "Instalar Plugin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" -msgstr "Admin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" -msgstr "Autor" +msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" -msgstr "Versión" +msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" -msgstr "Plugins inactivos" +msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" -msgstr "Pila de Error de Plugin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" -msgstr "Etapa" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:10 #, python-format msgid "Plugin details for %(name)s" -msgstr "Detalles del plugin para %(name)s" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:17 msgid "Plugin information" -msgstr "Información de Plugin" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:48 msgid "no version information supplied" -msgstr "no se proporcionó información de versión" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:62 msgid "License" -msgstr "Licencia" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:71 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." -msgstr "La información del código es extraída del último git commit para este plugin. Puede que no refleje los números de versión oficiales o la información, pero sí el código actual en ejecución." +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:77 msgid "Package information" -msgstr "Información del paquete" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:83 msgid "Installation method" -msgstr "Método de instalación" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:86 msgid "This plugin was installed as a package" -msgstr "Este plugin fue instalado como un paquete" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Este plugin fue encontrado en una ruta local de InvenTree" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" -msgstr "Ruta de instalación" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 msgid "Commit Author" -msgstr "Autor del Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:104 #: templates/about.html:47 msgid "Commit Date" -msgstr "Fecha del Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:108 #: templates/about.html:40 msgid "Commit Hash" -msgstr "Hash de Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:112 msgid "Commit Message" -msgstr "Mensaje de Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:117 msgid "Sign Status" -msgstr "Estado de Firma" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:122 msgid "Sign Key" -msgstr "Firma de clave" +msgstr "" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "Ajustes de Orden de Compra" +msgstr "" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reports.html:9 msgid "Report Settings" -msgstr "Ajustes del Informe" +msgstr "" #: templates/InvenTree/settings/setting.html:37 msgid "No value set" -msgstr "Ningún valor establecido" +msgstr "" #: templates/InvenTree/settings/setting.html:42 msgid "Edit setting" -msgstr "Editar ajustes" +msgstr "" #: templates/InvenTree/settings/settings.html:116 msgid "Edit Plugin Setting" -msgstr "Editar Configuración del Plugin" +msgstr "" #: templates/InvenTree/settings/settings.html:118 msgid "Edit Global Setting" -msgstr "Editar Configuración Global" +msgstr "" #: templates/InvenTree/settings/settings.html:120 msgid "Edit User Setting" -msgstr "Editar Configuración de Usuario" +msgstr "" #: templates/InvenTree/settings/settings.html:209 msgid "No category parameter templates found" -msgstr "No hay plantillas de parámetros de categoría" +msgstr "" #: templates/InvenTree/settings/settings.html:231 #: templates/InvenTree/settings/settings.html:330 msgid "Edit Template" -msgstr "Editar Plantilla" +msgstr "" #: templates/InvenTree/settings/settings.html:232 #: templates/InvenTree/settings/settings.html:331 msgid "Delete Template" -msgstr "Eliminar Plantilla" +msgstr "" #: templates/InvenTree/settings/settings.html:310 msgid "No part parameter templates found" -msgstr "No se encontraron plantillas de parámetros de parte" +msgstr "" #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" -msgstr "Configuración del Usuario" +msgstr "" #: templates/InvenTree/settings/sidebar.html:9 #: templates/InvenTree/settings/user.html:12 msgid "Account Settings" -msgstr "Configuración de la Cuenta" +msgstr "" #: templates/InvenTree/settings/sidebar.html:11 #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" -msgstr "Ajuste de Visualización" +msgstr "" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" -msgstr "Página de Inicio" +msgstr "" #: templates/InvenTree/settings/sidebar.html:15 #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "Ajustes de Búsqueda" +msgstr "" #: templates/InvenTree/settings/sidebar.html:19 msgid "Label Printing" -msgstr "Impresión de etiquetas" +msgstr "" #: templates/InvenTree/settings/sidebar.html:21 #: templates/InvenTree/settings/sidebar.html:37 msgid "Reporting" -msgstr "Informando" +msgstr "" #: templates/InvenTree/settings/sidebar.html:26 msgid "Global Settings" -msgstr "Configuración Global" +msgstr "" #: templates/InvenTree/settings/sidebar.html:29 msgid "Server Configuration" -msgstr "Configuración del Servidor" +msgstr "" #: templates/InvenTree/settings/sidebar.html:35 msgid "Currencies" -msgstr "Monedas" +msgstr "" #: templates/InvenTree/settings/sidebar.html:41 msgid "Categories" -msgstr "Categorías" +msgstr "" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" -msgstr "Configuración de orden de venta" +msgstr "" #: templates/InvenTree/settings/stock.html:7 msgid "Stock Settings" -msgstr "Configuración de Stock" +msgstr "" #: templates/InvenTree/settings/user.html:18 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "Cambiar Contraseña" +msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" -msgstr "Editar" +msgstr "" #: templates/InvenTree/settings/user.html:32 msgid "Username" -msgstr "Nombre de usuario" +msgstr "" #: templates/InvenTree/settings/user.html:36 msgid "First Name" -msgstr "Nombre" +msgstr "" #: templates/InvenTree/settings/user.html:40 msgid "Last Name" -msgstr "Apellido" +msgstr "" #: templates/InvenTree/settings/user.html:54 msgid "The following email addresses are associated with your account:" -msgstr "Las siguientes direcciones de correo electrónico están asociadas con tu cuenta:" +msgstr "" #: templates/InvenTree/settings/user.html:75 msgid "Verified" -msgstr "Verificado" +msgstr "" #: templates/InvenTree/settings/user.html:77 msgid "Unverified" -msgstr "Sin verificar" +msgstr "" #: templates/InvenTree/settings/user.html:79 msgid "Primary" -msgstr "Principal" +msgstr "" #: templates/InvenTree/settings/user.html:85 msgid "Make Primary" -msgstr "Hacer Principal" +msgstr "" #: templates/InvenTree/settings/user.html:86 msgid "Re-send Verification" -msgstr "Reenviar verificación" +msgstr "" #: templates/InvenTree/settings/user.html:87 #: templates/InvenTree/settings/user.html:149 msgid "Remove" -msgstr "Eliminar" +msgstr "" #: templates/InvenTree/settings/user.html:95 #: templates/InvenTree/settings/user.html:201 msgid "Warning:" -msgstr "Advertencia:" +msgstr "" #: templates/InvenTree/settings/user.html:96 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." -msgstr "Actualmente no tiene ninguna dirección de correo electrónico configurada. Realmente deberías añadir una dirección de correo electrónico para que puedas recibir notificaciones, restablecer tu contraseña, etc." +msgstr "" #: templates/InvenTree/settings/user.html:104 msgid "Add Email Address" -msgstr "Añadir correo electrónico" +msgstr "" #: templates/InvenTree/settings/user.html:109 msgid "Add Email" -msgstr "Agregar Email" +msgstr "" #: templates/InvenTree/settings/user.html:117 msgid "Social Accounts" -msgstr "Cuentas Sociales" +msgstr "" #: templates/InvenTree/settings/user.html:122 msgid "You can sign in to your account using any of the following third party accounts:" -msgstr "Puede iniciar sesión en su cuenta utilizando cualquiera de las siguientes cuentas de terceros:" +msgstr "" #: templates/InvenTree/settings/user.html:157 msgid "You currently have no social network accounts connected to this account." -msgstr "Actualmente no tiene cuentas en redes sociales asociadas a esta cuenta." +msgstr "" #: templates/InvenTree/settings/user.html:162 msgid "Add a 3rd Party Account" -msgstr "Añadir una cuenta de terceros" +msgstr "" #: templates/InvenTree/settings/user.html:172 msgid "Multifactor" -msgstr "Multifactor" +msgstr "" #: templates/InvenTree/settings/user.html:177 msgid "You have these factors available:" -msgstr "Tienes estos factores disponibles:" +msgstr "" #: templates/InvenTree/settings/user.html:187 msgid "TOTP" -msgstr "TOTP" +msgstr "" #: templates/InvenTree/settings/user.html:193 msgid "Static" -msgstr "Estático" +msgstr "" #: templates/InvenTree/settings/user.html:202 msgid "You currently do not have any factors set up." -msgstr "Actualmente no tienes ningún factor configurado." +msgstr "" #: templates/InvenTree/settings/user.html:209 msgid "Change factors" -msgstr "Cambiar factores" +msgstr "" #: templates/InvenTree/settings/user.html:210 msgid "Setup multifactor" -msgstr "Configurar factor múltiple" +msgstr "" #: templates/InvenTree/settings/user.html:212 msgid "Remove multifactor" -msgstr "Remover factor múltiple" +msgstr "" #: templates/InvenTree/settings/user.html:220 msgid "Active Sessions" -msgstr "Sesiones Activas" +msgstr "" #: templates/InvenTree/settings/user.html:226 msgid "Log out active sessions (except this one)" -msgstr "Cerrar sesiones activas (excepto esta)" +msgstr "" #: templates/InvenTree/settings/user.html:227 msgid "Log Out Active Sessions" -msgstr "Cerrar Sesiones Activas" +msgstr "" #: templates/InvenTree/settings/user.html:236 msgid "unknown on unknown" -msgstr "desconocido en desconocido" +msgstr "" #: templates/InvenTree/settings/user.html:237 msgid "unknown" -msgstr "desconocido" +msgstr "" #: templates/InvenTree/settings/user.html:241 msgid "IP Address" -msgstr "Dirección IP" +msgstr "" #: templates/InvenTree/settings/user.html:242 msgid "Device" -msgstr "Dispositivo" +msgstr "" #: templates/InvenTree/settings/user.html:243 msgid "Last Activity" -msgstr "Última Actividad" +msgstr "" #: templates/InvenTree/settings/user.html:252 #, python-format msgid "%(time)s ago (this session)" -msgstr "%(time)s atrás (esta sesión)" +msgstr "" #: templates/InvenTree/settings/user.html:254 #, python-format msgid "%(time)s ago" -msgstr "%(time)s atrás" +msgstr "" #: templates/InvenTree/settings/user.html:266 msgid "Do you really want to remove the selected email address?" -msgstr "¿Realmente desea eliminar la dirección de correo electrónico seleccionada?" +msgstr "" #: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" -msgstr "Configuración del Tema" +msgstr "" #: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" -msgstr "Seleccionar tema" +msgstr "" #: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" -msgstr "Establecer tema" +msgstr "" #: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" -msgstr "Configuración de Idioma" +msgstr "" #: templates/InvenTree/settings/user_display.html:65 msgid "Select language" -msgstr "Seleccionar idioma" +msgstr "" #: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" -msgstr "%(lang_translated)s%% traducido" +msgstr "" #: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" -msgstr "No hay traducciones disponibles" +msgstr "" #: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" -msgstr "Definir Idioma" +msgstr "" #: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" -msgstr "Algunos idiomas no están completos" +msgstr "" #: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" -msgstr "Mostrar solo el contenido" +msgstr "" #: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." -msgstr "y oculto." +msgstr "" #: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" -msgstr "Mostrar también" +msgstr "" #: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" -msgstr "¡Ayuda a los esfuerzos de traducción!" +msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "La traducción nativa de la aplicación web de InvenTree es un aporte de la comunidad a través de crowdin. Las contribuciones son bienvenidas y alentadas." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" -msgstr "Ajustes de página de inicio" +msgstr "" #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "Ajustes de Etiqueta" +msgstr "" #: templates/InvenTree/settings/user_notifications.html:8 msgid "Notification Settings" @@ -7343,7 +7422,7 @@ msgstr "" #: templates/about.html:10 msgid "InvenTree Version Information" -msgstr "Información de la versión de InvenTree" +msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620 @@ -7352,203 +7431,192 @@ msgstr "Información de la versión de InvenTree" #: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39 #: templates/modals.html:50 msgid "Close" -msgstr "Cerrar" +msgstr "" #: templates/about.html:20 msgid "InvenTree Version" -msgstr "Versión de InvenTree" +msgstr "" #: templates/about.html:25 msgid "Development Version" -msgstr "Versión de Desarrollo" +msgstr "" #: templates/about.html:28 msgid "Up to Date" -msgstr "Actualizado" +msgstr "" #: templates/about.html:30 msgid "Update Available" -msgstr "Actualización Disponible" +msgstr "" #: templates/about.html:53 msgid "InvenTree Documentation" -msgstr "Documentación de InvenTree" +msgstr "" #: templates/about.html:58 msgid "API Version" -msgstr "Versión API" +msgstr "" #: templates/about.html:63 msgid "Python Version" -msgstr "Versión de Python" +msgstr "" #: templates/about.html:68 msgid "Django Version" -msgstr "Versión de Django" +msgstr "" #: templates/about.html:73 msgid "View Code on GitHub" -msgstr "Ver código en GitHub" +msgstr "" #: templates/about.html:78 msgid "Credits" -msgstr "Créditos" +msgstr "" #: templates/about.html:83 msgid "Mobile App" -msgstr "Aplicación Móvil" +msgstr "" #: templates/about.html:88 msgid "Submit Bug Report" -msgstr "Enviar Informe de Error" +msgstr "" #: templates/about.html:95 templates/clip.html:4 msgid "copy to clipboard" -msgstr "copiar al portapapeles" +msgstr "" #: templates/about.html:95 msgid "copy version information" -msgstr "copiar información de versión" +msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm Email Address" -msgstr "Confirmar Email" +msgstr "" #: templates/account/email_confirm.html:16 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "Confirme que %(email)s es una dirección de correo electrónico para el usuario %(user_display)s." +msgstr "" #: templates/account/email_confirm.html:27 #, python-format msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." -msgstr "Este enlace de confirmación de correo electrónico ha caducado o no es válido. Por favor, envíe un nuevo correo electrónico de solicitud de confirmación." +msgstr "" #: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" -msgstr "Ingresar" +msgstr "" #: templates/account/login.html:21 #, python-format msgid "Please sign in with one\n" "of your existing third party accounts or sign up\n" "for a account and sign in below:" -msgstr "Por favor, inicia sesión con una\n" -"de tus cuentas de terceros existentes o regístrate\n" -" e inicia sesión a continuación:" +msgstr "" #: templates/account/login.html:25 #, python-format msgid "If you have not created an account yet, then please\n" "sign up first." -msgstr "Si aún no has creado una cuenta, por favor\n" -"regístrate primero." +msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "¿Ha olvidado la contraseña?" +msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "Instancia demo de InvenTree" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "Haga clic aquí para ver los detalles de acceso" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" -msgstr "o usar SSO" +msgstr "" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "Cerrar Sesión" +msgstr "" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "¿Está seguro de que desea salir?" +msgstr "" #: templates/account/logout.html:19 msgid "Back to Site" -msgstr "Volver al Sitio" +msgstr "" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "Restablecer Contraseña" +msgstr "" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "¿Olvidó su contraseña? Introduzca su dirección de correo electrónico a continuación y le enviaremos un correo electrónico que le permita restablecerla." +msgstr "" #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "Reestablecer mi Contraseña" +msgstr "" #: templates/account/password_reset.html:27 templates/account/signup.html:36 msgid "This function is currently disabled. Please contact an administrator." -msgstr "Esta función está actualmente deshabilitada. Por favor, póngase en contacto con un administrador." +msgstr "" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "Token Incorrecto" +msgstr "" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "El enlace de restablecimiento de contraseña no era válido, posiblemente porque ya ha sido utilizado. Por favor, solicite un nuevo restablecimiento de contraseña." +msgstr "" #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "Cambiar contraseña" +msgstr "" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "Se ha cambiado la contraseña." +msgstr "" #: templates/account/signup.html:11 templates/account/signup.html:22 msgid "Sign Up" -msgstr "Registrarse" +msgstr "" #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "¿Ya tienes una cuenta? Entonces inicia sesión." +msgstr "" #: templates/account/signup.html:27 msgid "Or use a SSO-provider for signup" -msgstr "O utilice un proveedor de SSO para registrarse" +msgstr "" #: templates/admin_button.html:2 msgid "View in administration panel" -msgstr "Ver en el panel de administración" +msgstr "" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "Autenticación de dos factores" +msgstr "" #: templates/allauth_2fa/authenticate.html:12 msgid "Authenticate" -msgstr "Autenticar" +msgstr "" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "Tokens de autenticación de doble factor" +msgstr "" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." -msgstr "Se han generado tokens de copia de seguridad, pero no se revelan aquí por razones de seguridad. Pulse el botón de abajo para generar nuevos." +msgstr "" #: templates/allauth_2fa/backup_tokens.html:20 msgid "No tokens. Press the button below to generate some." -msgstr "No hay tokens. Pulse el botón de abajo para generar algunos." +msgstr "" #: templates/allauth_2fa/backup_tokens.html:27 msgid "Generate backup tokens" -msgstr "Crear token de copias de seguridad" +msgstr "" #: templates/allauth_2fa/backup_tokens.html:31 #: templates/allauth_2fa/setup.html:40 @@ -7557,833 +7625,858 @@ msgstr "" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "Deshabilitar autenticación de dos factores" +msgstr "" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "¿Está seguro?" +msgstr "" #: templates/allauth_2fa/remove.html:14 msgid "Disable Two-Factor" -msgstr "Deshabilitar dos factores" +msgstr "" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "Configurar Autenticación de Dos Factores" +msgstr "" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" -msgstr "Paso 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 "Escanea el código QR de abajo con un generador de tokens de tu elección (por ejemplo Google Authenticator)." +msgstr "" #: templates/allauth_2fa/setup.html:23 msgid "Step 2" -msgstr "Paso 2" +msgstr "" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "Ingrese un token generado por la aplicación:" +msgstr "" #: templates/allauth_2fa/setup.html:35 msgid "Verify" -msgstr "Verificar" +msgstr "" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:54 msgid "Add Link" -msgstr "Agregar Enlace" +msgstr "" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:36 msgid "Add Attachment" -msgstr "Añadir archivo adjunto" +msgstr "" #: templates/base.html:99 msgid "Server Restart Required" -msgstr "Reinicio del Servidor Requerido" +msgstr "" #: templates/base.html:102 msgid "A configuration option has been changed which requires a server restart" -msgstr "Se ha cambiado una opción de configuración que requiere reiniciar el servidor" +msgstr "" #: templates/base.html:102 msgid "Contact your system administrator for further information" -msgstr "Póngase en contacto con su administrador para más información" +msgstr "" #: templates/email/build_order_required_stock.html:7 msgid "Stock is required for the following build order" -msgstr "Se requiere stock para el siguiente orden de trabajo" +msgstr "" #: templates/email/build_order_required_stock.html:8 #, python-format msgid "Build order %(build)s - building %(quantity)s x %(part)s" -msgstr "Orden de trabajo %(build)s - creando %(quantity)s x %(part)s" +msgstr "" #: templates/email/build_order_required_stock.html:10 msgid "Click on the following link to view this build order" -msgstr "Haga clic en el siguiente enlace para ver esta orden de trabajo" +msgstr "" #: templates/email/build_order_required_stock.html:14 msgid "The following parts are low on required stock" -msgstr "Las siguientes partes están bajas en stock requerido" +msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" -msgstr "Cantidad requerida" +msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" -msgstr "Disponible" +msgstr "" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:31 msgid "You are receiving this email because you are subscribed to notifications for this part " -msgstr "Estás recibiendo este correo electrónico porque estás suscrito a las notificaciones de esta parte " - -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "Versión de InvenTree" +msgstr "" #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "Haga clic en el siguiente enlace para ver esta pieza" +msgstr "" #: templates/email/low_stock_notification.html:19 msgid "Minimum Quantity" -msgstr "Cantidad Mínima" +msgstr "" #: templates/image_download.html:8 msgid "Specify URL for downloading image" -msgstr "Especificar URL para descargar la imagen" +msgstr "" #: templates/image_download.html:11 msgid "Must be a valid image URL" -msgstr "Debe ser una URL de imagen válida" +msgstr "" #: templates/image_download.html:12 msgid "Remote server must be accessible" -msgstr "Servidor remoto debe ser accesible" +msgstr "" #: templates/image_download.html:13 msgid "Remote image must not exceed maximum allowable file size" -msgstr "La imagen remota no debe exceder el tamaño máximo permitido de archivo" +msgstr "" #: templates/js/translated/api.js:190 templates/js/translated/modals.js:1056 msgid "No Response" -msgstr "Sin Respuesta" +msgstr "" #: templates/js/translated/api.js:191 templates/js/translated/modals.js:1057 msgid "No response from the InvenTree server" -msgstr "No hay respuesta del servidor InvenTree" +msgstr "" #: templates/js/translated/api.js:197 msgid "Error 400: Bad request" -msgstr "Error 400: Solicitud incorrecta" +msgstr "" #: templates/js/translated/api.js:198 msgid "API request returned error code 400" -msgstr "La solicitud API devolvió el código de error 400" +msgstr "" #: templates/js/translated/api.js:202 templates/js/translated/modals.js:1066 msgid "Error 401: Not Authenticated" -msgstr "Error 401: No autenticado" +msgstr "" #: templates/js/translated/api.js:203 templates/js/translated/modals.js:1067 msgid "Authentication credentials not supplied" -msgstr "Credenciales de autenticación no suministradas" +msgstr "" #: templates/js/translated/api.js:207 templates/js/translated/modals.js:1071 msgid "Error 403: Permission Denied" -msgstr "Error 403: Permiso Denegado" +msgstr "" #: templates/js/translated/api.js:208 templates/js/translated/modals.js:1072 msgid "You do not have the required permissions to access this function" -msgstr "No tiene los permisos necesarios para acceder a esta función" +msgstr "" #: templates/js/translated/api.js:212 templates/js/translated/modals.js:1076 msgid "Error 404: Resource Not Found" -msgstr "Error 404: Recurso No Encontrado" +msgstr "" #: templates/js/translated/api.js:213 templates/js/translated/modals.js:1077 msgid "The requested resource could not be located on the server" -msgstr "El recurso solicitado no se pudo encontrar en el servidor" +msgstr "" #: templates/js/translated/api.js:217 msgid "Error 405: Method Not Allowed" -msgstr "Error 405: Método no Permitido" +msgstr "" #: templates/js/translated/api.js:218 msgid "HTTP method not allowed at URL" -msgstr "Método HTTP no permitido en URL" +msgstr "" #: templates/js/translated/api.js:222 templates/js/translated/modals.js:1081 msgid "Error 408: Timeout" -msgstr "Error 408: Tiempo de espera agotado" +msgstr "" #: templates/js/translated/api.js:223 templates/js/translated/modals.js:1082 msgid "Connection timeout while requesting data from server" -msgstr "Tiempo de espera de conexión agotado al solicitar datos del servidor" +msgstr "" #: templates/js/translated/api.js:226 msgid "Unhandled Error Code" -msgstr "Código de error no controlado" +msgstr "" #: templates/js/translated/api.js:227 msgid "Error code" -msgstr "Código de error" +msgstr "" #: templates/js/translated/attachment.js:78 msgid "No attachments found" -msgstr "No se encontraron archivos adjuntos" +msgstr "" #: templates/js/translated/attachment.js:100 msgid "Edit Attachment" -msgstr "Editar archivos adjuntos" +msgstr "" #: templates/js/translated/attachment.js:110 msgid "Confirm Delete" -msgstr "Confirmar eliminación" +msgstr "" #: templates/js/translated/attachment.js:111 msgid "Delete Attachment" -msgstr "Eliminar archivo adjunto" +msgstr "" #: templates/js/translated/attachment.js:167 msgid "Upload Date" -msgstr "Fecha de subida" +msgstr "" #: templates/js/translated/attachment.js:183 msgid "Edit attachment" -msgstr "Editar adjunto" +msgstr "" #: templates/js/translated/attachment.js:190 msgid "Delete attachment" -msgstr "Eliminar adjunto" +msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" -msgstr "Escanea los datos de código de barras aquí usando un escáner de cuña" +msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" -msgstr "Introduzca datos de código de barras" +msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" -msgstr "Código de barras" +msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" -msgstr "Introduzca notas opcionales para la transferencia de stock" +msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" -msgstr "Escribir notas" +msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" -msgstr "Error del servidor" +msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" -msgstr "Respuesta desconocida del servidor" +msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" -msgstr "Respuesta del servidor inválida" +msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" -msgstr "Escanear datos de código de barras abajo" +msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" -msgstr "Escanear código de barras" +msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" -msgstr "No hay URL en respuesta" +msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" -msgstr "Enlazar código de barras al artículo de stock" +msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" -msgstr "Esto eliminará la asociación entre este artículo de stock y el código de barras" +msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" -msgstr "Desvincular" +msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" -msgstr "Eliminar elemento de stock" +msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" -msgstr "Comprobar elementos de stock en ubicación" +msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" -msgstr "Registrar" +msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" -msgstr "Artículo de stock ya escaneado" +msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" -msgstr "Artículo de stock ya está en esta ubicación" +msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" -msgstr "Artículo de stock añadido" +msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" -msgstr "El código de barras no coincide con el artículo de stock" +msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" -msgstr "Comprobar en la ubicación" +msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" -msgstr "El código de barras no coincide con una ubicación válida" +msgstr "" #: templates/js/translated/bom.js:75 msgid "Display row data" -msgstr "Mostrar datos de fila" +msgstr "" #: templates/js/translated/bom.js:131 msgid "Row Data" -msgstr "Datos de Fila" +msgstr "" #: templates/js/translated/bom.js:249 msgid "Download BOM Template" -msgstr "Descargar plantilla BOM" +msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" -msgstr "Formato" +msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" -msgstr "Seleccionar formato de archivo" +msgstr "" #: templates/js/translated/bom.js:294 msgid "Cascading" -msgstr "Cascada" +msgstr "" #: templates/js/translated/bom.js:295 msgid "Download cascading / multi-level BOM" -msgstr "Descargar BOM en cascada / multi-nivel" +msgstr "" #: templates/js/translated/bom.js:300 msgid "Levels" -msgstr "Niveles" +msgstr "" #: templates/js/translated/bom.js:301 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Seleccione el número máximo de niveles BOM a exportar (0 = todos los niveles)" +msgstr "" #: templates/js/translated/bom.js:307 msgid "Include Parameter Data" -msgstr "Incluye Parámetros de Datos" +msgstr "" #: templates/js/translated/bom.js:308 msgid "Include part parameter data in exported BOM" -msgstr "Incluye los datos del parámetro de la pieza en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:313 msgid "Include Stock Data" -msgstr "Incluye Datos de Stock" +msgstr "" #: templates/js/translated/bom.js:314 msgid "Include part stock data in exported BOM" -msgstr "Incluye datos de stock de piezas en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:319 msgid "Include Manufacturer Data" -msgstr "Incluir Datos del fabricante" +msgstr "" #: templates/js/translated/bom.js:320 msgid "Include part manufacturer data in exported BOM" -msgstr "Incluye datos del fabricante de piezas en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:325 msgid "Include Supplier Data" -msgstr "Incluir Datos del Proveedor" +msgstr "" #: templates/js/translated/bom.js:326 msgid "Include part supplier data in exported BOM" -msgstr "Incluye datos del proveedor de piezas en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:509 msgid "Remove substitute part" -msgstr "Eliminar parte sustituta" +msgstr "" #: templates/js/translated/bom.js:565 msgid "Select and add a new substitute part using the input below" -msgstr "Seleccione y añada una nueva parte sustituta usando la siguiente entrada" +msgstr "" #: templates/js/translated/bom.js:576 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "¿Está seguro que desea eliminar este enlace de la parte sustituta?" +msgstr "" #: templates/js/translated/bom.js:582 msgid "Remove Substitute Part" -msgstr "Eliminar parte sustituta" +msgstr "" #: templates/js/translated/bom.js:621 msgid "Add Substitute" -msgstr "Añadir sustituto" +msgstr "" #: templates/js/translated/bom.js:622 msgid "Edit BOM Item Substitutes" -msgstr "Editar sustitutos de elementos BOM" +msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" -msgstr "Sustitutos Disponibles" +msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" -msgstr "Stock de variante permitido" +msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "Abrir sub-ensamblaje" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" -msgstr "Sustitutos" +msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" -msgstr "Rango de Precio de Compra" +msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" -msgstr "Precio Promedio de Compra" +msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" -msgstr "Ver BOM" +msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" -msgstr "Validar Artículo para el BOM" +msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" -msgstr "Esta línea ha sido validada" +msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" -msgstr "Editar partes sustitutas" +msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" -msgstr "Editar Artículo de BOM" +msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" -msgstr "Eliminar Artículo de BOM" +msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" -msgstr "No se encontraron elementos BOM" +msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" -msgstr "¿Está seguro que desea eliminar este elemento BOM?" +msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" -msgstr "Parte requerida" +msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" -msgstr "Heredado de BOM superior" +msgstr "" #: templates/js/translated/build.js:86 msgid "Edit Build Order" -msgstr "Editar Orden de Trabajo" +msgstr "" #: templates/js/translated/build.js:120 msgid "Create Build Order" -msgstr "Crear Orden de Trabajo" +msgstr "" #: templates/js/translated/build.js:141 msgid "Build order is ready to be completed" -msgstr "El pedido de construcción está listo para ser completado" +msgstr "" #: templates/js/translated/build.js:146 msgid "Build Order is incomplete" -msgstr "Orden de construcción incompleta" +msgstr "" #: templates/js/translated/build.js:174 msgid "Complete Build Order" -msgstr "Completar Orden de Construcción" +msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" -msgstr "Siguiente número de serie disponible" +msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" -msgstr "Último número de serie" +msgstr "" #: templates/js/translated/build.js:226 msgid "The Bill of Materials contains trackable parts" -msgstr "La ley de materiales contiene partes rastreables" +msgstr "" #: templates/js/translated/build.js:227 msgid "Build outputs must be generated individually" -msgstr "Las salidas de construcción deben ser generadas individualmente" +msgstr "" #: templates/js/translated/build.js:235 msgid "Trackable parts can have serial numbers specified" -msgstr "Las partes rastreables pueden tener números de serie especificados" +msgstr "" #: templates/js/translated/build.js:236 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Introduzca números de serie para generar múltiples salidas de construcción única" +msgstr "" #: templates/js/translated/build.js:243 msgid "Create Build Output" -msgstr "Crear Salida de Trabajo" +msgstr "" #: templates/js/translated/build.js:274 msgid "Allocate stock items to this build output" -msgstr "Asignar elementos de stock a esta salida de trabajo" +msgstr "" #: templates/js/translated/build.js:285 msgid "Unallocate stock from build output" -msgstr "Desasignar stock de la salida de trabajo" +msgstr "" #: templates/js/translated/build.js:294 msgid "Complete build output" -msgstr "Completar salida de trabajo" +msgstr "" #: templates/js/translated/build.js:302 msgid "Delete build output" -msgstr "Eliminar Salida de Trabajo" +msgstr "" #: templates/js/translated/build.js:325 msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "¿Está seguro que desea desasignar los artículos de stock de este trabajo?" +msgstr "" #: templates/js/translated/build.js:343 msgid "Unallocate Stock Items" -msgstr "Desasignar artículos de stock" - -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 -msgid "Select Build Outputs" -msgstr "Seleccionar Salida de Trabajo" - -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 -msgid "At least one build output must be selected" -msgstr "Se debe seleccionar al menos una salida de trabajo" - -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 -msgid "Output" -msgstr "Salida" - -#: templates/js/translated/build.js:432 -msgid "Complete Build Outputs" -msgstr "Completar salidas de trabajo" - -#: templates/js/translated/build.js:577 -msgid "Delete Build Outputs" -msgstr "Eliminar Salidas" - -#: templates/js/translated/build.js:666 -msgid "No build order allocations found" -msgstr "No se encontraron asignaciones de órdenes de trabajo" - -#: templates/js/translated/build.js:704 -msgid "Location not specified" -msgstr "Ubicación no especificada" - -#: templates/js/translated/build.js:886 -msgid "No active build outputs found" -msgstr "No se encontraron salidas de trabajo activas" - -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 -msgid "Edit stock allocation" -msgstr "Editar asignación de stock" - -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 -msgid "Delete stock allocation" -msgstr "Eliminar asignación de stock" - -#: templates/js/translated/build.js:1368 -msgid "Edit Allocation" -msgstr "Editar Asignación" - -#: templates/js/translated/build.js:1378 -msgid "Remove Allocation" -msgstr "Quitar asignación" - -#: templates/js/translated/build.js:1403 -msgid "Substitute parts available" -msgstr "Piezas sustitutas disponibles" - -#: templates/js/translated/build.js:1420 -msgid "Quantity Per" -msgstr "Cantidad por" - -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 -msgid "Allocated" -msgstr "Asignadas" - -#: templates/js/translated/build.js:1459 -msgid "loading" msgstr "" -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:583 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:672 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:710 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1093 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1697 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:1707 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:1732 +msgid "Substitute parts available" +msgstr "" + +#: templates/js/translated/build.js:1749 +msgid "Quantity Per" +msgstr "" + +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 +msgid "Allocated" +msgstr "" + +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" -msgstr "Stock de Trabajo" +msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" -msgstr "Pedido de stock" +msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" -msgstr "Asignar stock" +msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" -msgstr "Seleccionar partes" +msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" -msgstr "Debe seleccionar al menos una parte para asignar" +msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" -msgstr "Especificar la cantidad de asignación de stock" +msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" -msgstr "Seleccionar ubicación de origen (dejar en blanco para tomar de todas las ubicaciones)" +msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Confirmar asignación de stock" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" -msgstr "Asignar Artículos de Stock a Orden de Trabajo" +msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" -msgstr "No hay ubicaciones de stock coincidentes" +msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" -msgstr "No hay artículos de stock coincidentes" +msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" -msgstr "No hay trabajos que coincidan con la consulta" +msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" -msgstr "Seleccionar" +msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" -msgstr "Orden de trabajo atrasada" +msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" -msgstr "No hay información de usuario" +msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" -msgstr "Sin información" +msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" -msgstr "No se asignaron partes para" +msgstr "" #: templates/js/translated/company.js:65 msgid "Add Manufacturer" -msgstr "Agregar Fabricante" +msgstr "" #: templates/js/translated/company.js:78 templates/js/translated/company.js:177 msgid "Add Manufacturer Part" -msgstr "Añadir Parte del fabricante" +msgstr "" #: templates/js/translated/company.js:99 msgid "Edit Manufacturer Part" -msgstr "Editar Parte del Fabricante" +msgstr "" #: templates/js/translated/company.js:108 msgid "Delete Manufacturer Part" -msgstr "Eliminar Parte del Fabricante" +msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" -msgstr "Añadir Proveedor" +msgstr "" #: templates/js/translated/company.js:193 msgid "Add Supplier Part" -msgstr "Añadir Parte de Proveedor" +msgstr "" #: templates/js/translated/company.js:208 msgid "Edit Supplier Part" -msgstr "Editar Parte del Proveedor" +msgstr "" #: templates/js/translated/company.js:218 msgid "Delete Supplier Part" -msgstr "Eliminar Parte de Proveedor" +msgstr "" #: templates/js/translated/company.js:286 msgid "Add new Company" -msgstr "Añadir nueva Empresa" +msgstr "" #: templates/js/translated/company.js:363 msgid "Parts Supplied" -msgstr "Partes Suministradas" +msgstr "" #: templates/js/translated/company.js:372 msgid "Parts Manufactured" -msgstr "Partes Fabricadas" +msgstr "" #: templates/js/translated/company.js:387 msgid "No company information found" -msgstr "No se encontró información de la empresa" +msgstr "" #: templates/js/translated/company.js:406 msgid "The following manufacturer parts will be deleted" -msgstr "Se eliminarán las siguientes partes del fabricante" +msgstr "" #: templates/js/translated/company.js:423 msgid "Delete Manufacturer Parts" -msgstr "Eliminar Partes del Fabricante" +msgstr "" #: templates/js/translated/company.js:480 msgid "No manufacturer parts found" -msgstr "No se encontraron partes del fabricante" +msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" -msgstr "Plantilla de parte" +msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" -msgstr "Parte ensamblada" +msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" -msgstr "No se encontraron parámetros" +msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" -msgstr "Editar parámetro" +msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" -msgstr "Eliminar parámetro" +msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" -msgstr "Editar parámetro" +msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" -msgstr "Eliminar parámetro" +msgstr "" #: templates/js/translated/company.js:737 msgid "No supplier parts found" -msgstr "No se encontraron piezas de proveedor" +msgstr "" #: templates/js/translated/filters.js:178 #: templates/js/translated/filters.js:441 msgid "true" -msgstr "verdadero" +msgstr "" #: templates/js/translated/filters.js:182 #: templates/js/translated/filters.js:442 msgid "false" -msgstr "falso" +msgstr "" #: templates/js/translated/filters.js:204 msgid "Select filter" -msgstr "Seleccionar filtro" +msgstr "" #: templates/js/translated/filters.js:288 msgid "Download data" @@ -8391,40 +8484,40 @@ msgstr "" #: templates/js/translated/filters.js:291 msgid "Reload data" -msgstr "Recargar datos" +msgstr "" #: templates/js/translated/filters.js:295 msgid "Add new filter" -msgstr "Añadir un nuevo filtro" +msgstr "" #: templates/js/translated/filters.js:298 msgid "Clear all filters" -msgstr "Limpiar todos los filtros" +msgstr "" #: templates/js/translated/filters.js:350 msgid "Create filter" -msgstr "Crear filtro" +msgstr "" #: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366 #: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394 msgid "Action Prohibited" -msgstr "Acción Prohibida" +msgstr "" #: templates/js/translated/forms.js:353 msgid "Create operation not allowed" -msgstr "Operación de creación no permitida" +msgstr "" #: templates/js/translated/forms.js:368 msgid "Update operation not allowed" -msgstr "Operación de actualización no permitida" +msgstr "" #: templates/js/translated/forms.js:382 msgid "Delete operation not allowed" -msgstr "Operación de eliminación no permitida" +msgstr "" #: templates/js/translated/forms.js:396 msgid "View operation not allowed" -msgstr "Operación de visualización no permitida" +msgstr "" #: templates/js/translated/forms.js:627 msgid "Keep this form open" @@ -8432,24 +8525,24 @@ msgstr "" #: templates/js/translated/forms.js:702 msgid "Enter a valid number" -msgstr "Introduzca un número válido" +msgstr "" #: templates/js/translated/forms.js:1194 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" -msgstr "Existen errores en el formulario" +msgstr "" #: templates/js/translated/forms.js:1623 msgid "No results found" -msgstr "No hay resultados" +msgstr "" #: templates/js/translated/forms.js:1833 templates/search.html:29 msgid "Searching" -msgstr "Buscando" +msgstr "" #: templates/js/translated/forms.js:2082 msgid "Clear input" -msgstr "Limpiar entrada" +msgstr "" #: templates/js/translated/forms.js:2547 msgid "File Column" @@ -8465,13 +8558,13 @@ msgstr "" #: templates/js/translated/helpers.js:20 msgid "YES" -msgstr "SI" +msgstr "" #: templates/js/translated/helpers.js:22 msgid "NO" -msgstr "NO" +msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8480,42 +8573,42 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" -msgstr "Seleccionar elementos de stock" +msgstr "" #: templates/js/translated/label.js:61 msgid "Stock item(s) must be selected before printing labels" -msgstr "Elemento(s) de stock deben ser seleccionados antes de imprimir etiquetas" +msgstr "" #: templates/js/translated/label.js:79 templates/js/translated/label.js:133 #: templates/js/translated/label.js:191 msgid "No Labels Found" -msgstr "No se encontraron etiquetas" +msgstr "" #: templates/js/translated/label.js:80 msgid "No labels found which match selected stock item(s)" -msgstr "No se han encontrado etiquetas que coincidan con los artículos de stock seleccionado(s)" +msgstr "" #: templates/js/translated/label.js:115 msgid "Select Stock Locations" -msgstr "Seleccionar ubicaciones de stock" +msgstr "" #: templates/js/translated/label.js:116 msgid "Stock location(s) must be selected before printing labels" -msgstr "Las ubicación(es) del stock deben ser seleccionadas antes de imprimir etiquetas" +msgstr "" #: templates/js/translated/label.js:134 msgid "No labels found which match selected stock location(s)" -msgstr "No se encontraron etiquetas que coincidan con las ubicaciones de stock seleccionadas" +msgstr "" #: templates/js/translated/label.js:173 msgid "Part(s) must be selected before printing labels" -msgstr "Pieza(s) deben ser seleccionadas antes de imprimir etiquetas" +msgstr "" #: templates/js/translated/label.js:192 msgid "No labels found which match the selected part(s)" -msgstr "No se encontraron etiquetas que coincidan con la(s) parte(s) seleccionada(s)" +msgstr "" #: templates/js/translated/label.js:261 msgid "Select Printer" @@ -8527,686 +8620,724 @@ msgstr "" #: templates/js/translated/label.js:304 msgid "stock items selected" -msgstr "artículos de stock seleccionados" +msgstr "" #: templates/js/translated/label.js:312 templates/js/translated/label.js:328 msgid "Select Label Template" -msgstr "Seleccione Plantilla de Etiqueta" +msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 #: templates/js/translated/modals.js:610 msgid "Cancel" -msgstr "Cancelar" +msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 #: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" -msgstr "Enviar" +msgstr "" #: templates/js/translated/modals.js:118 msgid "Form Title" -msgstr "Título del Formulario" +msgstr "" #: templates/js/translated/modals.js:392 msgid "Waiting for server..." -msgstr "Esperando al servidor..." +msgstr "" #: templates/js/translated/modals.js:551 msgid "Show Error Information" -msgstr "Mostrar Información de Error" +msgstr "" #: templates/js/translated/modals.js:609 msgid "Accept" -msgstr "Aceptar" +msgstr "" #: templates/js/translated/modals.js:666 msgid "Loading Data" -msgstr "Cargando Datos" +msgstr "" #: templates/js/translated/modals.js:937 msgid "Invalid response from server" -msgstr "Respuesta no válida del servidor" +msgstr "" #: templates/js/translated/modals.js:937 msgid "Form data missing from server response" -msgstr "Datos del formulario faltantes de la respuesta del servidor" +msgstr "" #: templates/js/translated/modals.js:949 msgid "Error posting form data" -msgstr "Error al publicar datos del formulario" +msgstr "" #: templates/js/translated/modals.js:1046 msgid "JSON response missing form data" -msgstr "Respuesta JSON faltan datos del formulario" +msgstr "" #: templates/js/translated/modals.js:1061 msgid "Error 400: Bad Request" -msgstr "Error 400: Solicitud Incorrecta" +msgstr "" #: templates/js/translated/modals.js:1062 msgid "Server returned error code 400" -msgstr "El servidor devolvió el código de error 400" +msgstr "" #: templates/js/translated/modals.js:1085 msgid "Error requesting form data" -msgstr "Error al solicitar datos del formulario" +msgstr "" #: templates/js/translated/model_renderers.js:60 msgid "Company ID" -msgstr "ID de Empresa" +msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" -msgstr "ID de Stock" +msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" -msgstr "ID de Ubicación" +msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" -msgstr "ID de construcción" +msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" -msgstr "ID del Pedido" +msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" -msgstr "ID de envío" +msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" -msgstr "ID de Categoría" +msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" -msgstr "ID de Parte del Fabricante" +msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" -msgstr "ID Parte del Proveedor" +msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" -msgstr "No se ha asignado ningún artículo de stock a este envío" +msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" -msgstr "Los siguientes artículos de stock serán enviados" +msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" -msgstr "Completar Envío" +msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" -msgstr "Confirmar Envío" +msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" -msgstr "Crear Nuevo Envío" +msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" -msgstr "Añadir Cliente" +msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" -msgstr "Crear Orden de Venta" +msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" -msgstr "Exportar Orden" +msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" -msgstr "Seleccionar Artículos de Línea" +msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" -msgstr "Debe seleccionar al menos un elemento de línea" +msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" -msgstr "Cantidad a recibir" +msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" -msgstr "Estado del Stock" +msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" -msgstr "Código de Pedido" +msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" -msgstr "Pedido" +msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" -msgstr "Confirmar recepción de artículos" +msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" -msgstr "Recibir artículos de orden de compra" +msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" -msgstr "No se encontraron órdenes de compra" +msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" -msgstr "El pedido está vencido" +msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" -msgstr "Editar Ítem de Línea" +msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" -msgstr "Eliminar Ítemde Línea" +msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" -msgstr "No hay elementos de línea" +msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" -msgstr "Total" +msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" -msgstr "Precio Unitario" +msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" -msgstr "Precio Total" +msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" -msgstr "Recibir ítem de línea" +msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" -msgstr "Editar elemento de línea" +msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" -msgstr "Eliminar elemento de línea" +msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" -msgstr "No se encontraron ventas" +msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" -msgstr "Cliente Inválido" +msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" -msgstr "Editar envío" +msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" -msgstr "Completar envío" +msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" -msgstr "Eliminar envío" +msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" -msgstr "Editar envío" +msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" -msgstr "Eliminar Envío" +msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" -msgstr "No se encontraron envíos coincidentes" +msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" -msgstr "Referencia de Envío" +msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" -msgstr "No enviado" +msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" -msgstr "Seguimiento" +msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" -msgstr "Asignar artículos de stock a pedido de venta" +msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" -msgstr "No se encontraron asignaciones de órdenes" +msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" -msgstr "Editar Asignación de Stock" +msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" -msgstr "Confirmar Operación de Eliminar" +msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" -msgstr "Eliminar Adjudicación de Stock" +msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" -msgstr "Enviado al cliente" +msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" -msgstr "Ubicación de stock no especificada" +msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" -msgstr "Asignar números de serie" +msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" -msgstr "Comprar stock" +msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" -msgstr "Calcular precio" +msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" -msgstr "No se puede eliminar ya que los artículos han sido enviados" +msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" -msgstr "No se puede eliminar ya que los elementos han sido asignados" +msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" -msgstr "Asignar Números de Serie" +msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" -msgstr "Actualizar Precio Unitario" +msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" -msgstr "No hay elementos de línea coincidentes" +msgstr "" + +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" #: templates/js/translated/part.js:55 msgid "Part Attributes" -msgstr "Atributos de Parte" +msgstr "" #: templates/js/translated/part.js:59 msgid "Part Creation Options" -msgstr "Opciones de Creación de Parte" +msgstr "" #: templates/js/translated/part.js:63 msgid "Part Duplication Options" -msgstr "Opciones de Duplicación de Parte" +msgstr "" #: templates/js/translated/part.js:67 msgid "Supplier Options" -msgstr "Opciones de Proveedor" +msgstr "" #: templates/js/translated/part.js:81 msgid "Add Part Category" -msgstr "Añadir Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:165 msgid "Create Initial Stock" -msgstr "Crear Stock Inicial" +msgstr "" #: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" -msgstr "Crear un elemento inicial de stock para esta parte" +msgstr "" #: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" -msgstr "Cantidad Inicial de Stock" +msgstr "" #: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" -msgstr "Especifique la cantidad inicial de stock para esta parte" +msgstr "" #: templates/js/translated/part.js:181 msgid "Select destination stock location" -msgstr "Seleccionar ubicación de stock de destino" +msgstr "" #: templates/js/translated/part.js:199 msgid "Copy Category Parameters" -msgstr "Copiar Parámetros de Categoría" +msgstr "" #: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" -msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada" +msgstr "" #: templates/js/translated/part.js:208 msgid "Add Supplier Data" -msgstr "Añadir Datos de Proveedor" +msgstr "" #: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" -msgstr "Crear datos iniciales del proveedor para esta parte" +msgstr "" #: templates/js/translated/part.js:265 msgid "Copy Image" -msgstr "Copiar Imagen" +msgstr "" #: templates/js/translated/part.js:266 msgid "Copy image from original part" -msgstr "Copiar imagen desde la parte original" +msgstr "" #: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" -msgstr "Copiar la factura de materiales de la parte original" +msgstr "" #: templates/js/translated/part.js:281 msgid "Copy Parameters" -msgstr "Copiar Parámetros" +msgstr "" #: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" -msgstr "Copiar datos del parámetro de la parte original" +msgstr "" #: templates/js/translated/part.js:295 msgid "Parent part category" -msgstr "Categoría superior de parte" +msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" -msgstr "Editar Parte" +msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" -msgstr "Parte editada" +msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" -msgstr "Crear Variante de Parte" +msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" -msgstr "Estás suscrito a las notificaciones de este elemento" +msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" -msgstr "Te has suscrito a las notificaciones de este elemento" +msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" -msgstr "Suscríbete a las notificaciones de este elemento" +msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" -msgstr "Has cancelado la suscripción a las notificaciones de este elemento" +msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" -msgstr "Validar el BOM marcará cada elemento de línea como válido" +msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" -msgstr "Validar la Factura de Materiales" +msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" -msgstr "Validación de Lista de Materiales" +msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" -msgstr "Copiar Factura de Materiales" +msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" -msgstr "Stock bajo" +msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" -msgstr "Parte Rastreable" +msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" -msgstr "Parte virtual" +msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" -msgstr "Parte suscrita" +msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" -msgstr "Pieza vendible" +msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" -msgstr "No se encontraron variantes" +msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" -msgstr "Eliminar relación de parte" +msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" -msgstr "Eliminar Relación de Parte" +msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" -msgstr "No se encontraron partes" +msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" -msgstr "Sin categoría" +msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" -msgstr "Mostrar como lista" +msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" -msgstr "Mostrar como cuadrícula" +msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" -msgstr "Mostrar como árbol" +msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" -msgstr "Categoría suscrita" +msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" -msgstr "Ruta" +msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" -msgstr "No hay plantillas de prueba que coincidan con la consulta" +msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" -msgstr "Editar resultado de prueba" +msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" -msgstr "Eliminar resultado de prueba" - -#: templates/js/translated/part.js:1853 -msgid "This test is defined for a parent part" -msgstr "Esta prueba está definida para una parte principal" +msgstr "" #: templates/js/translated/part.js:1875 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" -msgstr "Editar plantilla de resultado de prueba" +msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" -msgstr "Eliminar plantilla de resultados de prueba" +msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" -msgstr "No se encontró información de ${human_name}" +msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" -msgstr "Editar ${human_name}" +msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" -msgstr "Eliminar ${human_name}" - -#: templates/js/translated/part.js:2075 -msgid "Current Stock" msgstr "" #: templates/js/translated/part.js:2108 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" -msgstr "Precio Único" +msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" -msgstr "Diferencia de Precio Único" +msgstr "" #: templates/js/translated/plugin.js:22 msgid "The Plugin was installed" -msgstr "El Plugin fue Instalado" +msgstr "" #: templates/js/translated/report.js:67 msgid "items selected" -msgstr "ítems seleccionados" +msgstr "" #: templates/js/translated/report.js:75 msgid "Select Report Template" -msgstr "Seleccionar Plantilla de Informe" +msgstr "" #: templates/js/translated/report.js:90 msgid "Select Test Report Template" -msgstr "Seleccione Plantilla de Informe de Prueba" +msgstr "" #: templates/js/translated/report.js:119 msgid "Stock item(s) must be selected before printing reports" -msgstr "Elemento(s) de stock deben ser seleccionados antes de imprimir informes" +msgstr "" #: templates/js/translated/report.js:136 templates/js/translated/report.js:189 #: templates/js/translated/report.js:243 templates/js/translated/report.js:297 #: templates/js/translated/report.js:351 msgid "No Reports Found" -msgstr "No se Encontraron Informes" +msgstr "" #: templates/js/translated/report.js:137 msgid "No report templates found which match selected stock item(s)" -msgstr "No se encontraron plantillas de informe que coincidan con los artículos de stock seleccionados" +msgstr "" #: templates/js/translated/report.js:172 msgid "Select Builds" -msgstr "Seleccionar construcciones" +msgstr "" #: templates/js/translated/report.js:173 msgid "Build(s) must be selected before printing reports" -msgstr "Construccion(es) deben ser seleccionadas antes de imprimir informes" +msgstr "" #: templates/js/translated/report.js:190 msgid "No report templates found which match selected build(s)" -msgstr "No se encontraron plantillas de informe que coincidan con la construcción(es) seleccionadas" +msgstr "" #: templates/js/translated/report.js:226 msgid "Part(s) must be selected before printing reports" -msgstr "Pieza(s) deben ser seleccionadas antes de imprimir informes" +msgstr "" #: templates/js/translated/report.js:244 msgid "No report templates found which match selected part(s)" -msgstr "No se encontraron plantillas de informe que coincidan con la(s) parte(s) seleccionada(s)" +msgstr "" #: templates/js/translated/report.js:279 msgid "Select Purchase Orders" -msgstr "Seleccionar órdenes de compra" +msgstr "" #: templates/js/translated/report.js:280 msgid "Purchase Order(s) must be selected before printing report" -msgstr "Pedido(s) de compra debe ser seleccionado antes de imprimir informe" +msgstr "" #: templates/js/translated/report.js:298 templates/js/translated/report.js:352 msgid "No report templates found which match selected orders" -msgstr "No se encontraron plantillas de informe que coincidan con los pedidos seleccionados" +msgstr "" #: templates/js/translated/report.js:333 msgid "Select Sales Orders" -msgstr "Seleccionar Pedidos de Venta" +msgstr "" #: templates/js/translated/report.js:334 msgid "Sales Order(s) must be selected before printing report" -msgstr "Pedido(s) de venta debe ser seleccionado antes de imprimir el informe" +msgstr "" #: templates/js/translated/search.js:286 msgid "Minimize results" @@ -9218,548 +9349,568 @@ msgstr "" #: templates/js/translated/stock.js:72 msgid "Serialize Stock Item" -msgstr "Serializar Artículo de Stock" +msgstr "" #: templates/js/translated/stock.js:100 msgid "Confirm Stock Serialization" -msgstr "Confirmar Serialización de Stock" +msgstr "" #: templates/js/translated/stock.js:109 msgid "Parent stock location" -msgstr "Ubicación del stock principal" +msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" -msgstr "Nueva Ubicación de Stock" +msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" -msgstr "Esta parte no se puede serializar" +msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" -msgstr "Introduzca la cantidad inicial para este artículo de stock" +msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Introduzca números de serie para el nuevo stock (o deje en blanco)" +msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" -msgstr "Crear nuevo artículo de stock" +msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" -msgstr "Creados varios artículos de stock" +msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" -msgstr "Encontrar número serial" +msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" -msgstr "Introducir número de serie" +msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" -msgstr "Introducir un número de serie" +msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" -msgstr "Ningún número de serie coincidente" +msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" -msgstr "Más de un resultado encontrado" +msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" -msgstr "Confirmar asignación de stock" +msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" -msgstr "Asignar Stock al Cliente" - -#: templates/js/translated/stock.js:679 -msgid "Warning: Merge operation cannot be reversed" -msgstr "Advertencia: La operación de fusión no puede ser revertida" - -#: templates/js/translated/stock.js:680 -msgid "Some information will be lost when merging stock items" -msgstr "Alguna información se perderá al combinar artículos de stock" +msgstr "" #: templates/js/translated/stock.js:682 -msgid "Stock transaction history will be deleted for merged items" -msgstr "Se eliminará el historial de transacciones de stock para elementos fusionados" +msgid "Warning: Merge operation cannot be reversed" +msgstr "" #: templates/js/translated/stock.js:683 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:685 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" -msgstr "La información de la pieza del proveedor se eliminará para los artículos fusionados" +msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" -msgstr "Confirmar fusión de artículos de stock" +msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" -msgstr "Fusionar Artículos de Stock" +msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" -msgstr "Transferir Stock" +msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" -msgstr "Mover" +msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" -msgstr "Contar Stock" +msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" -msgstr "Contar" +msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" -msgstr "Eliminar Stock" +msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" -msgstr "Tomar" +msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" -msgstr "Añadir Stock" +msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" -msgstr "Añadir" +msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" -msgstr "Eliminar Stock" +msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "La cantidad no se puede ajustar para el stock serializado" +msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" -msgstr "Especificar cantidad de stock" +msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" -msgstr "Debe seleccionar al menos un artículo de stock disponible" - -#: templates/js/translated/stock.js:1174 -msgid "PASS" -msgstr "PASA" - -#: templates/js/translated/stock.js:1176 -msgid "FAIL" -msgstr "FALLO" +msgstr "" #: templates/js/translated/stock.js:1181 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1183 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" -msgstr "SIN RESULTADO" +msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" -msgstr "Pruebas pasadas" +msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" -msgstr "Añadir resultado de prueba" +msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" -msgstr "No se encontraron resultados de prueba" +msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" -msgstr "Fecha de Prueba" +msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" -msgstr "Editar Resultados de Prueba" +msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" -msgstr "Borrar Resultado de Prueba" +msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" -msgstr "En producción" +msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" -msgstr "Instalado en el artículo de stock" +msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" -msgstr "Asignado a la Orden de Venta" +msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" -msgstr "Ninguna ubicación de stock establecida" - -#: templates/js/translated/stock.js:1692 -msgid "Stock item is in production" -msgstr "El artículo de stock está en producción" - -#: templates/js/translated/stock.js:1697 -msgid "Stock item assigned to sales order" -msgstr "Artículo de stock asignado al pedido de venta" - -#: templates/js/translated/stock.js:1700 -msgid "Stock item assigned to customer" -msgstr "Artículo de stock asignado al cliente" - -#: templates/js/translated/stock.js:1704 -msgid "Stock item has expired" -msgstr "Artículo de stock ha caducado" - -#: templates/js/translated/stock.js:1706 -msgid "Stock item will expire soon" -msgstr "El artículo de stock caducará pronto" +msgstr "" #: templates/js/translated/stock.js:1712 -msgid "Serialized stock item has been allocated" -msgstr "Se ha asignado un artículo de stock serializado" +msgid "Stock item is in production" +msgstr "" -#: templates/js/translated/stock.js:1714 -msgid "Stock item has been fully allocated" -msgstr "Artículo de stock ha sido completamente asignado" +#: templates/js/translated/stock.js:1717 +msgid "Stock item assigned to sales order" +msgstr "" -#: templates/js/translated/stock.js:1716 -msgid "Stock item has been partially allocated" -msgstr "Artículo de stock ha sido asignado parcialmente" +#: templates/js/translated/stock.js:1720 +msgid "Stock item assigned to customer" +msgstr "" -#: templates/js/translated/stock.js:1721 -msgid "Stock item has been installed in another item" -msgstr "Artículo de stock ha sido instalado en otro artículo" +#: templates/js/translated/stock.js:1724 +msgid "Stock item has expired" +msgstr "" -#: templates/js/translated/stock.js:1728 -msgid "Stock item has been rejected" -msgstr "Artículo de stock ha sido rechazado" - -#: templates/js/translated/stock.js:1730 -msgid "Stock item is lost" -msgstr "Artículo de stock perdido" +#: templates/js/translated/stock.js:1726 +msgid "Stock item will expire soon" +msgstr "" #: templates/js/translated/stock.js:1732 -msgid "Stock item is destroyed" -msgstr "Artículo de stock destruido" +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:1734 +msgid "Stock item has been fully allocated" +msgstr "" #: templates/js/translated/stock.js:1736 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:1741 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:1750 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:1752 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" -msgstr "Agotado" +msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" -msgstr "Inventario" +msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" -msgstr "Parte del proveedor no especificada" +msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" -msgstr "No hay artículos de stock que coincidan con la consulta" +msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" -msgstr "Establecer estado de stock" +msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" -msgstr "Seleccionar Código de Estado" +msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" -msgstr "Debe seleccionar el código de estado" +msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" -msgstr "Detalles" +msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" -msgstr "Ubicación ya no existe" +msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" -msgstr "La orden de compra ya no existe" +msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" -msgstr "El cliente ya no existe" +msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" -msgstr "Artículo de stock ya no existe" - -#: templates/js/translated/stock.js:2436 -msgid "Added" -msgstr "Añadido" - -#: templates/js/translated/stock.js:2444 -msgid "Removed" -msgstr "Eliminado" - -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "Editar entrada de rastreo" +msgstr "" #: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "Eliminar entrada de rastreo" +msgid "Added" +msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2494 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:2570 msgid "No installed items" -msgstr "Ningún elemento instalado" +msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" -msgstr "Desinstalar elemento de stock" +msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Los artículos de stock sólo pueden ser instalados si cumplen con los siguientes criterios" +msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" -msgstr "El artículo de stock está serializado y no pertenece a otro artículo" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" #: templates/js/translated/table_filters.js:56 msgid "Trackable Part" -msgstr "Parte Rastreable" +msgstr "" #: templates/js/translated/table_filters.js:60 msgid "Assembled Part" -msgstr "Parte Ensamblada" +msgstr "" #: templates/js/translated/table_filters.js:64 msgid "Validated" -msgstr "Validado" +msgstr "" #: templates/js/translated/table_filters.js:72 msgid "Allow Variant Stock" -msgstr "Permitir stock de variante" +msgstr "" #: templates/js/translated/table_filters.js:110 #: templates/js/translated/table_filters.js:183 msgid "Include sublocations" -msgstr "Incluir sub-ubicación" +msgstr "" #: templates/js/translated/table_filters.js:111 msgid "Include locations" -msgstr "Incluir ubicaciones" +msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" -msgstr "Incluir subcategorías" +msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" -msgstr "Suscrito" +msgstr "" #: templates/js/translated/table_filters.js:136 #: templates/js/translated/table_filters.js:218 msgid "Is Serialized" -msgstr "Es Serializado" +msgstr "" #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:225 msgid "Serial number GTE" -msgstr "Número Serial GTE" +msgstr "" #: templates/js/translated/table_filters.js:140 #: templates/js/translated/table_filters.js:226 msgid "Serial number greater than or equal to" -msgstr "Número de serie mayor o igual a" +msgstr "" #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:229 msgid "Serial number LTE" -msgstr "Número Serial LTE" +msgstr "" #: templates/js/translated/table_filters.js:144 #: templates/js/translated/table_filters.js:230 msgid "Serial number less than or equal to" -msgstr "Número de serie menor o igual que" +msgstr "" #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:148 #: templates/js/translated/table_filters.js:221 #: templates/js/translated/table_filters.js:222 msgid "Serial number" -msgstr "Número de serie" +msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" -msgstr "Código de lote" +msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" -msgstr "Partes activas" +msgstr "" #: templates/js/translated/table_filters.js:164 msgid "Show stock for active parts" -msgstr "Mostrar stock para las partes activas" +msgstr "" #: templates/js/translated/table_filters.js:169 msgid "Part is an assembly" -msgstr "Parte es un ensamblado" +msgstr "" #: templates/js/translated/table_filters.js:173 msgid "Is allocated" -msgstr "Está asignado" +msgstr "" #: templates/js/translated/table_filters.js:174 msgid "Item has been allocated" -msgstr "El artículo ha sido asignado" +msgstr "" #: templates/js/translated/table_filters.js:179 msgid "Stock is available for use" -msgstr "Stock disponible para uso" +msgstr "" #: templates/js/translated/table_filters.js:184 msgid "Include stock in sublocations" -msgstr "Incluye stock en sub-ubicaciones" +msgstr "" #: templates/js/translated/table_filters.js:189 msgid "Show stock items which are depleted" -msgstr "Mostrar artículos de stock que están agotados" +msgstr "" #: templates/js/translated/table_filters.js:194 msgid "Show items which are in stock" -msgstr "Mostrar elementos en stock" +msgstr "" #: templates/js/translated/table_filters.js:198 msgid "In Production" -msgstr "En Producción" +msgstr "" #: templates/js/translated/table_filters.js:199 msgid "Show items which are in production" -msgstr "Mostrar artículos que están en producción" +msgstr "" #: templates/js/translated/table_filters.js:203 msgid "Include Variants" -msgstr "Incluye Variantes" +msgstr "" #: templates/js/translated/table_filters.js:204 msgid "Include stock items for variant parts" -msgstr "Incluye artículos de stock para partes de variantes" +msgstr "" #: templates/js/translated/table_filters.js:208 msgid "Installed" -msgstr "Instalado" +msgstr "" #: templates/js/translated/table_filters.js:209 msgid "Show stock items which are installed in another item" -msgstr "Mostrar elementos de stock que están instalados en otro artículo" +msgstr "" #: templates/js/translated/table_filters.js:214 msgid "Show items which have been assigned to a customer" -msgstr "Mostrar elementos que han sido asignados a un cliente" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:235 msgid "Stock status" -msgstr "Estado del stock" +msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" -msgstr "Tiene precio de compra" - -#: templates/js/translated/table_filters.js:244 -msgid "Show stock items which have a purchase price set" -msgstr "Mostrar artículos de stock que tienen un precio de compra establecido" +msgstr "" #: templates/js/translated/table_filters.js:253 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" -msgstr "Mostrar artículos de stock que han caducado" +msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" -msgstr "Mostrar stock que está cerca de caducar" +msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" -msgstr "Estado de la construcción" +msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" -msgstr "Asignado a mí" +msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" -msgstr "Estado del pedido" +msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" -msgstr "Pendiente" - -#: templates/js/translated/table_filters.js:412 -msgid "Include parts in subcategories" -msgstr "Incluye partes en subcategorías" - -#: templates/js/translated/table_filters.js:416 -msgid "Has IPN" -msgstr "Tiene IPN" - -#: templates/js/translated/table_filters.js:417 -msgid "Part has internal part number" -msgstr "La parte tiene número de pieza interno" - -#: templates/js/translated/table_filters.js:422 -msgid "Show active parts" -msgstr "Mostrar partes activas" +msgstr "" #: templates/js/translated/table_filters.js:430 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:434 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:435 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:440 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" -msgstr "Comprable" +msgstr "" #: templates/js/translated/tables.js:50 msgid "Export Table Data" @@ -9771,93 +9922,89 @@ msgstr "" #: templates/js/translated/tables.js:433 msgid "Loading data" -msgstr "Cargando datos" +msgstr "" #: templates/js/translated/tables.js:436 msgid "rows per page" -msgstr "filas por página" +msgstr "" #: templates/js/translated/tables.js:441 msgid "Showing all rows" -msgstr "Mostrar todas las filas" +msgstr "" #: templates/js/translated/tables.js:443 msgid "Showing" -msgstr "Mostrando" +msgstr "" #: templates/js/translated/tables.js:443 msgid "to" -msgstr "para" +msgstr "" #: templates/js/translated/tables.js:443 msgid "of" -msgstr "de" +msgstr "" #: templates/js/translated/tables.js:443 msgid "rows" -msgstr "filas" +msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" -msgstr "Buscar" +msgstr "" #: templates/js/translated/tables.js:450 msgid "No matching results" -msgstr "No se encontraron resultados" +msgstr "" #: templates/js/translated/tables.js:453 msgid "Hide/Show pagination" -msgstr "Ocultar/Mostrar paginación" +msgstr "" #: templates/js/translated/tables.js:456 msgid "Refresh" -msgstr "Actualizar" +msgstr "" #: templates/js/translated/tables.js:459 msgid "Toggle" -msgstr "Alternar" +msgstr "" #: templates/js/translated/tables.js:462 msgid "Columns" -msgstr "Columnas" +msgstr "" #: templates/js/translated/tables.js:465 msgid "All" -msgstr "Todo" +msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" -msgstr "Comprar" +msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" -msgstr "Vender" +msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" -msgstr "Cerrar sesión" +msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" -msgstr "Iniciar sesión" +msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" -msgstr "Acerca de InvenTree" - -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "Modo demo de InvenTree" +msgstr "" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" @@ -9869,15 +10016,15 @@ msgstr "" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "Datos QR no proporcionados" +msgstr "" #: templates/registration/logged_out.html:6 msgid "You were logged out successfully." -msgstr "Se ha cerrado la sesión correctamente." +msgstr "" #: templates/registration/logged_out.html:8 msgid "Log in again" -msgstr "Volver a ingresar" +msgstr "" #: templates/search.html:9 msgid "Show full search results" @@ -9901,119 +10048,119 @@ msgstr "" #: templates/stats.html:9 msgid "Server" -msgstr "Servidor" +msgstr "" #: templates/stats.html:13 msgid "Instance Name" -msgstr "Nombre de Instancia" +msgstr "" #: templates/stats.html:18 msgid "Database" -msgstr "Base de datos" +msgstr "" #: templates/stats.html:26 msgid "Server is running in debug mode" -msgstr "El servidor se está ejecutando en modo depuración" +msgstr "" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "Modo Docker" +msgstr "" #: templates/stats.html:34 msgid "Server is deployed using docker" -msgstr "El servidor está desplegado usando docker" +msgstr "" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "Soporte para Plugins" +msgstr "" #: templates/stats.html:43 msgid "Plugin support enabled" -msgstr "Soporte de plugins habilitado" +msgstr "" #: templates/stats.html:45 msgid "Plugin support disabled" -msgstr "Soporte de plugins desactivado" +msgstr "" #: templates/stats.html:52 msgid "Server status" -msgstr "Estado del servidor" +msgstr "" #: templates/stats.html:55 msgid "Healthy" -msgstr "Healthy" +msgstr "" #: templates/stats.html:57 msgid "Issues detected" -msgstr "Problemas detectados" +msgstr "" #: templates/stats.html:64 msgid "Background Worker" -msgstr "Trabajador en segundo plano" +msgstr "" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "Trabajador en segundo plano no ejecutado" +msgstr "" #: templates/stats.html:75 msgid "Email Settings" -msgstr "Configuración de Email" +msgstr "" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "Configuración de correo no configurada" +msgstr "" #: templates/stock_table.html:17 msgid "Barcode Actions" -msgstr "Acciones de código de barras" +msgstr "" #: templates/stock_table.html:33 msgid "Print test reports" -msgstr "Imprimir informes de prueba" +msgstr "" #: templates/stock_table.html:40 msgid "Stock Options" -msgstr "Opciones Stock" +msgstr "" #: templates/stock_table.html:45 msgid "Add to selected stock items" -msgstr "Añadir a los elementos de stock seleccionados" +msgstr "" #: templates/stock_table.html:46 msgid "Remove from selected stock items" -msgstr "Eliminar de los elementos de stock seleccionados" +msgstr "" #: templates/stock_table.html:47 msgid "Stocktake selected stock items" -msgstr "Artículos de stock seleccionados" +msgstr "" #: templates/stock_table.html:48 msgid "Move selected stock items" -msgstr "Mover elementos de stock seleccionados" +msgstr "" #: templates/stock_table.html:49 msgid "Merge selected stock items" -msgstr "Combinar artículos de stock seleccionados" +msgstr "" #: templates/stock_table.html:49 msgid "Merge stock" -msgstr "Fusionar stock" +msgstr "" #: templates/stock_table.html:50 msgid "Order selected items" -msgstr "Ordenar artículos seleccionados" +msgstr "" #: templates/stock_table.html:52 msgid "Change status" -msgstr "Cambiar estado" +msgstr "" #: templates/stock_table.html:52 msgid "Change stock status" -msgstr "Cambiar estado de stock" +msgstr "" #: templates/stock_table.html:55 msgid "Delete selected items" -msgstr "Eliminar elementos seleccionados" +msgstr "" #: templates/stock_table.html:55 msgid "Delete stock" @@ -10021,65 +10168,65 @@ msgstr "" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "Sí" +msgstr "" #: templates/yesnolabel.html:6 msgid "No" -msgstr "No" +msgstr "" #: users/admin.py:64 msgid "Users" -msgstr "Usuarios" +msgstr "" #: users/admin.py:65 msgid "Select which users are assigned to this group" -msgstr "Seleccione qué usuarios están asignados a este grupo" +msgstr "" #: users/admin.py:187 msgid "The following users are members of multiple groups:" -msgstr "Los siguientes usuarios son miembros de varios grupos:" +msgstr "" #: users/admin.py:210 msgid "Personal info" -msgstr "Información personal" +msgstr "" #: users/admin.py:211 msgid "Permissions" -msgstr "Permisos" +msgstr "" #: users/admin.py:214 msgid "Important dates" -msgstr "Fechas importantes" +msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" -msgstr "Permiso establecido" +msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" -msgstr "Grupo" - -#: users/models.py:212 -msgid "View" -msgstr "Vista" - -#: users/models.py:212 -msgid "Permission to view items" -msgstr "Permiso para ver elementos" +msgstr "" #: users/models.py:214 +msgid "View" +msgstr "" + +#: users/models.py:214 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:216 msgid "Permission to add items" -msgstr "Permiso para añadir elementos" - -#: users/models.py:216 -msgid "Change" -msgstr "Cambiar" - -#: users/models.py:216 -msgid "Permissions to edit items" -msgstr "Permisos para editar elementos" +msgstr "" #: users/models.py:218 -msgid "Permission to delete items" -msgstr "Permiso para eliminar elementos" +msgid "Change" +msgstr "" + +#: users/models.py:218 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:220 +msgid "Permission to delete items" +msgstr "" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.mo b/InvenTree/locale/es_MX/LC_MESSAGES/django.mo deleted file mode 100644 index 71cbdf3e9d..0000000000 Binary files a/InvenTree/locale/es_MX/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index c752304ce6..f096cd681e 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 22:21+0000\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:64 +#: InvenTree/api.py:57 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:110 +#: InvenTree/api.py:103 msgid "No action specified" msgstr "" -#: InvenTree/api.py:124 +#: InvenTree/api.py:118 msgid "No matching action found" msgstr "" @@ -34,308 +34,386 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:26 order/forms.py:37 order/forms.py:48 order/forms.py:59 -#: order/forms.py:70 part/forms.py:108 templates/account/email_confirm.html:20 -#: templates/js/translated/forms.js:595 +#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 +#: order/forms.py:57 templates/account/email_confirm.html:20 +#: templates/js/translated/forms.js:601 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:136 +#: InvenTree/forms.py:142 msgid "Confirm delete" msgstr "" -#: InvenTree/forms.py:137 +#: InvenTree/forms.py:143 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:168 +#: InvenTree/forms.py:174 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:169 +#: InvenTree/forms.py:175 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:176 +#: InvenTree/forms.py:182 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:177 +#: InvenTree/forms.py:183 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:209 +#: InvenTree/forms.py:215 msgid "Select Category" msgstr "" -#: InvenTree/forms.py:230 +#: InvenTree/forms.py:236 msgid "Email (again)" msgstr "" -#: InvenTree/forms.py:234 +#: InvenTree/forms.py:240 msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:254 +#: InvenTree/forms.py:260 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:430 +#: InvenTree/helpers.py:449 #, python-brace-format -msgid "Duplicate serial: {n}" +msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:437 order/models.py:318 order/models.py:440 -#: stock/views.py:1264 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:440 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:462 InvenTree/helpers.py:465 InvenTree/helpers.py:468 -#: InvenTree/helpers.py:493 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:498 +#: InvenTree/helpers.py:522 #, python-brace-format -msgid "Duplicate serial: {g}" +msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:506 +#: InvenTree/helpers.py:530 +#, python-brace-format +msgid "Invalid/no group {group}" +msgstr "" + +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:510 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:185 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:186 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 -#: templates/js/translated/attachment.js:117 +#: InvenTree/models.py:197 stock/models.py:2202 +#: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:198 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:163 part/models.py:797 +#: InvenTree/models.py:204 company/models.py:131 company/models.py:348 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:540 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:208 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 -#: common/models.py:1186 part/models.py:2205 part/models.py:2225 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:218 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:241 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:264 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:274 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:277 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:284 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:291 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:326 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 -#: label/models.py:112 part/models.py:741 part/models.py:2389 -#: report/models.py:181 templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 +#: templates/InvenTree/notifications/notifications.html:84 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 +#: templates/InvenTree/settings/plugin_settings.html:23 +#: templates/InvenTree/settings/settings.html:320 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 -#: build/templates/build/detail.html:25 company/models.py:354 +#: InvenTree/models.py:349 build/models.py:209 +#: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 -#: part/templates/part/part_base.html:163 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 +#: part/templates/part/part_base.html:167 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 -#: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 -#: templates/js/translated/company.js:345 -#: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: stock/templates/stock/location.html:94 +#: templates/InvenTree/settings/plugin_settings.html:33 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 +#: templates/js/translated/company.js:551 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:350 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:358 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" -#: InvenTree/settings.py:670 -msgid "German" +#: InvenTree/serializers.py:334 +msgid "Invalid value" msgstr "" -#: InvenTree/settings.py:671 -msgid "Greek" +#: InvenTree/serializers.py:355 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:356 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:380 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:386 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:407 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:410 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:533 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:536 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:623 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:632 +#, python-brace-format +msgid "Duplicate column: '{col}'" msgstr "" #: InvenTree/settings.py:672 -msgid "English" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Spanish" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Spanish (Mexican)" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "French" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Hebrew" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Italian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Japanese" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Korean" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Dutch" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Norwegian" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Polish" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Portugese" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Russian" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 -msgid "Swedish" +msgid "Dutch" msgstr "" #: InvenTree/settings.py:686 -msgid "Thai" +msgid "Norwegian" msgstr "" #: InvenTree/settings.py:687 -msgid "Turkish" +msgid "Polish" msgstr "" #: InvenTree/settings.py:688 -msgid "Vietnamese" +msgid "Portuguese" msgstr "" #: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" -#: InvenTree/status.py:94 +#: InvenTree/status.py:110 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:98 +#: InvenTree/status.py:114 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:101 +#: InvenTree/status.py:117 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:311 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -343,12 +421,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 +#: order/templates/order/order_base.html:128 +#: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -362,8 +442,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:148 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -387,630 +467,746 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:269 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:271 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:274 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:276 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:283 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:285 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:288 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:208 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:294 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:295 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:297 +#: InvenTree/status_codes.py:307 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" -#: InvenTree/validators.py:23 +#: InvenTree/validators.py:25 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:51 +#: InvenTree/validators.py:53 msgid "Invalid character in part name" msgstr "" -#: InvenTree/validators.py:64 +#: InvenTree/validators.py:66 #, python-brace-format msgid "IPN must match regex pattern {pat}" msgstr "" -#: InvenTree/validators.py:78 InvenTree/validators.py:92 -#: InvenTree/validators.py:106 +#: InvenTree/validators.py:80 InvenTree/validators.py:94 +#: InvenTree/validators.py:108 #, python-brace-format msgid "Reference must match pattern {pattern}" msgstr "" -#: InvenTree/validators.py:114 +#: InvenTree/validators.py:116 #, python-brace-format msgid "Illegal character in name ({x})" msgstr "" -#: InvenTree/validators.py:133 InvenTree/validators.py:149 +#: InvenTree/validators.py:137 InvenTree/validators.py:153 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:151 +#: InvenTree/validators.py:155 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:158 -msgid "Overage must be an integer value or a percentage" +#: InvenTree/validators.py:162 +msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:101 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" -#: barcodes/api.py:53 barcodes/api.py:150 +#: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" msgstr "" -#: barcodes/api.py:126 +#: barcodes/api.py:132 msgid "No match found for barcode data" msgstr "" -#: barcodes/api.py:128 +#: barcodes/api.py:134 msgid "Match found for barcode data" msgstr "" -#: barcodes/api.py:153 +#: barcodes/api.py:159 msgid "Must provide stockitem parameter" msgstr "" -#: barcodes/api.py:160 +#: barcodes/api.py:166 msgid "No matching stock item found" msgstr "" -#: barcodes/api.py:190 -msgid "Barcode already matches StockItem object" +#: barcodes/api.py:197 +msgid "Barcode already matches Stock Item" msgstr "" -#: barcodes/api.py:194 -msgid "Barcode already matches StockLocation object" +#: barcodes/api.py:201 +msgid "Barcode already matches Stock Location" msgstr "" -#: barcodes/api.py:198 -msgid "Barcode already matches Part object" +#: barcodes/api.py:205 +msgid "Barcode already matches Part" msgstr "" -#: barcodes/api.py:204 barcodes/api.py:216 -msgid "Barcode hash already matches StockItem object" +#: barcodes/api.py:211 barcodes/api.py:223 +msgid "Barcode hash already matches Stock Item" msgstr "" -#: barcodes/api.py:222 -msgid "Barcode associated with StockItem" +#: barcodes/api.py:229 +msgid "Barcode associated with Stock Item" msgstr "" -#: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:132 -#: build/templates/build/detail.html:35 common/models.py:1225 -#: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/forms.py:102 order/models.py:729 order/models.py:991 -#: order/templates/order/order_wizard/match_parts.html:30 -#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 -#: part/forms.py:239 part/forms.py:255 part/models.py:2576 -#: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:969 part/templates/part/detail.html:1055 -#: part/templates/part/part_pricing.html:16 -#: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 -#: report/templates/report/inventree_so_report.html:91 -#: report/templates/report/inventree_test_report_base.html:81 -#: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:167 -#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 -#: templates/js/translated/build.js:235 templates/js/translated/build.js:435 -#: templates/js/translated/build.js:629 templates/js/translated/build.js:639 -#: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 -#: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 -msgid "Quantity" -msgstr "" - -#: build/forms.py:37 -msgid "Enter quantity for build output" -msgstr "" - -#: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 -msgid "Serial Numbers" -msgstr "" - -#: build/forms.py:43 -msgid "Enter serial numbers for build outputs" -msgstr "" - -#: build/forms.py:49 -msgid "Confirm creation of build output" -msgstr "" - -#: build/forms.py:70 -msgid "Confirm deletion of build output" -msgstr "" - -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:20 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:20 build/views.py:62 msgid "Confirm build cancellation" msgstr "" -#: build/models.py:133 +#: build/models.py:135 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:137 build/templates/build/build_base.html:9 +#: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:397 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" -#: build/models.py:138 build/templates/build/build_base.html:13 +#: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:42 -#: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 -#: templates/InvenTree/search.html:145 -#: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 +#: order/templates/order/sales_order_detail.html:114 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: templates/InvenTree/search.html:139 +#: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" msgstr "" -#: build/models.py:198 +#: build/models.py:200 msgid "Build Order Reference" msgstr "" -#: build/models.py:199 order/models.py:249 order/models.py:556 -#: order/models.py:736 part/models.py:2585 -#: part/templates/part/bom_upload/match_parts.html:30 -#: report/templates/report/inventree_po_report.html:92 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 +#: part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" -#: build/models.py:210 +#: build/models.py:212 msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:164 -#: build/templates/build/detail.html:88 +#: build/models.py:221 build/templates/build/build_base.html:169 +#: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:220 +#: build/models.py:222 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:77 -#: build/templates/build/detail.html:30 company/models.py:705 -#: order/models.py:789 order/models.py:860 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 -#: part/models.py:2151 part/models.py:2167 part/models.py:2186 -#: part/models.py:2203 part/models.py:2305 part/models.py:2427 -#: part/models.py:2560 part/models.py:2867 -#: part/templates/part/part_app_base.html:8 +#: build/models.py:227 build/templates/build/build_base.html:77 +#: build/templates/build/detail.html:29 company/models.py:706 +#: order/models.py:966 order/models.py:1055 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 +#: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 -#: templates/InvenTree/search.html:86 +#: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214 -#: templates/js/translated/bom.js:393 templates/js/translated/build.js:620 -#: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 -#: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 -#: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" -#: build/models.py:233 +#: build/models.py:235 msgid "Select part to build" msgstr "" -#: build/models.py:238 +#: build/models.py:240 msgid "Sales Order Reference" msgstr "" -#: build/models.py:242 +#: build/models.py:244 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1347 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" -#: build/models.py:251 +#: build/models.py:253 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:256 +#: build/models.py:258 msgid "Destination Location" msgstr "" -#: build/models.py:260 +#: build/models.py:262 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:264 +#: build/models.py:266 msgid "Build Quantity" msgstr "" -#: build/models.py:267 +#: build/models.py:269 msgid "Number of stock items to build" msgstr "" -#: build/models.py:271 +#: build/models.py:273 msgid "Completed items" msgstr "" -#: build/models.py:273 +#: build/models.py:275 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:234 +#: build/models.py:279 msgid "Build Status" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:289 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1104 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:296 order/models.py:578 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" -#: build/models.py:297 +#: build/models.py:299 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:300 order/models.py:291 -#: templates/js/translated/build.js:1697 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" -#: build/models.py:306 +#: build/models.py:308 msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1668 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" -#: build/models.py:315 +#: build/models.py:317 msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:185 -#: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:162 part/models.py:940 +#: build/models.py:325 build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:115 order/models.py:148 +#: order/templates/order/order_base.html:170 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" -#: build/models.py:324 +#: build/models.py:326 msgid "User responsible for this build order" msgstr "" -#: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:102 +#: build/models.py:331 build/templates/build/detail.html:101 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:347 stock/models.py:538 -#: stock/templates/stock/item_base.html:367 +#: part/templates/part/part_base.html:346 stock/models.py:667 +#: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:334 build/serializers.py:201 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:183 order/models.py:738 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 +#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 +#: stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" -#: build/models.py:335 +#: build/models.py:337 msgid "Extra build notes" msgstr "" -#: build/models.py:710 +#: build/models.py:750 msgid "No build output specified" msgstr "" -#: build/models.py:713 +#: build/models.py:753 msgid "Build output is already completed" msgstr "" -#: build/models.py:716 +#: build/models.py:756 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1108 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1117 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1127 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1133 order/models.py:964 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1139 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1193 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:339 -#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 -#: templates/navbar.html:33 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1254 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1270 build/serializers.py:328 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:361 -#: templates/js/translated/build.js:408 templates/js/translated/build.js:413 -#: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 +#: stock/serializers.py:753 stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:351 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1271 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1284 +#: build/models.py:1363 build/serializers.py:193 +#: build/templates/build/build_base.html:82 +#: build/templates/build/detail.html:34 common/models.py:1489 +#: company/forms.py:42 company/templates/company/supplier_part.html:251 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 +#: order/templates/order/order_wizard/match_parts.html:30 +#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 +#: part/templates/part/part_pricing.html:16 +#: part/templates/part/upload_bom.html:53 +#: report/templates/report/inventree_build_order_base.html:114 +#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_so_report.html:91 +#: report/templates/report/inventree_test_report_base.html:81 +#: report/templates/report/inventree_test_report_base.html:139 +#: stock/forms.py:139 stock/serializers.py:293 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:246 +#: stock/templates/stock/item_base.html:254 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 +msgid "Quantity" +msgstr "" + +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1292 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1293 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:357 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" -#: build/serializers.py:146 +#: build/serializers.py:150 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:150 +#: build/serializers.py:154 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:154 +#: build/serializers.py:158 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:158 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:307 -#: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 -#: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 -msgid "Location" +#: build/serializers.py:194 +msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:191 -msgid "Location for completed build outputs" -msgstr "" - -#: build/serializers.py:197 build/templates/build/build_base.html:137 -#: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:173 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 -msgid "Status" -msgstr "" - -#: build/serializers.py:213 -msgid "A list of build outputs must be provided" -msgstr "" - -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2700 -#: part/models.py:2859 -msgid "BOM Item" -msgstr "" - -#: build/serializers.py:269 -msgid "Build output" -msgstr "" - -#: build/serializers.py:278 -msgid "Build output must point to the same build" -msgstr "" - -#: build/serializers.py:319 -msgid "bom_item.part must point to the same part as the build order" -msgstr "" - -#: build/serializers.py:334 -msgid "Item must be in stock" -msgstr "" - -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" +#: build/serializers.py:213 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:216 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 +#: stock/forms.py:78 stock/serializers.py:314 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:231 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:245 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:246 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:280 stock/api.py:593 +msgid "The following serial numbers already exist" +msgstr "" + +#: build/serializers.py:333 build/serializers.py:406 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 +#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 +#: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 +msgid "Location" +msgstr "" + +#: build/serializers.py:377 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 +msgid "Status" +msgstr "" + +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + #: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:448 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:458 templates/js/translated/build.js:151 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:463 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:464 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:474 templates/js/translated/build.js:155 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:483 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:486 build/templates/build/build_base.html:95 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:524 +msgid "Build output" +msgstr "" + +#: build/serializers.py:533 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:580 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:595 stock/serializers.py:642 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:396 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:403 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:431 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/tasks.py:92 +#: build/serializers.py:749 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:757 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:758 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:763 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:764 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:769 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:770 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/tasks.py:98 msgid "Stock required for build order" msgstr "" @@ -1033,7 +1229,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:215 build/views.py:56 +#: build/templates/build/build_base.html:220 build/views.py:53 msgid "Cancel Build" msgstr "" @@ -1043,304 +1239,294 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:82 +#: build/templates/build/build_base.html:87 msgid "Build Description" msgstr "" -#: build/templates/build/build_base.html:91 +#: build/templates/build/build_base.html:101 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:108 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:105 +#: build/templates/build/build_base.html:115 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:110 +#: build/templates/build/build_base.html:120 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:115 +#: build/templates/build/build_base.html:125 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:120 +#: build/templates/build/build_base.html:130 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:144 -#: order/templates/order/sales_order_base.html:141 +#: build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:131 order/models.py:873 +#: order/templates/order/order_base.html:156 +#: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:156 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:151 -#: build/templates/build/build_base.html:196 +#: build/templates/build/build_base.html:156 +#: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:322 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:158 -#: build/templates/build/detail.html:68 build/templates/build/detail.html:143 -#: templates/js/translated/build.js:1641 -#: templates/js/translated/table_filters.js:304 +#: build/templates/build/build_base.html:163 +#: build/templates/build/detail.html:67 build/templates/build/detail.html:142 +#: order/templates/order/sales_order_base.html:170 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:171 -#: build/templates/build/detail.html:95 order/models.py:857 +#: build/templates/build/build_base.html:176 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 -#: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:301 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:291 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:178 -#: build/templates/build/detail.html:109 +#: build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:108 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:224 +#: build/templates/build/build_base.html:229 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" -#: build/templates/build/build_output_create.html:7 -msgid "The Bill of Materials contains trackable parts" -msgstr "" - -#: build/templates/build/build_output_create.html:8 -msgid "Build outputs must be generated individually." -msgstr "" - -#: build/templates/build/build_output_create.html:9 -msgid "Multiple build outputs will be created based on the quantity specified." -msgstr "" - -#: build/templates/build/build_output_create.html:15 -msgid "Trackable parts can have serial numbers specified" -msgstr "" - -#: build/templates/build/build_output_create.html:16 -msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" - #: build/templates/build/cancel.html:5 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" +#: build/templates/build/delete_build.html:5 +msgid "Are you sure you want to delete this build?" msgstr "" -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - -#: build/templates/build/detail.html:16 +#: build/templates/build/detail.html:15 msgid "Build Details" msgstr "" -#: build/templates/build/detail.html:39 +#: build/templates/build/detail.html:38 msgid "Stock Source" msgstr "" -#: build/templates/build/detail.html:44 +#: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" -#: build/templates/build/detail.html:57 +#: build/templates/build/detail.html:56 msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:647 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: build/templates/build/detail.html:80 +#: stock/templates/stock/item_base.html:315 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:233 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" -#: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:131 -#: order/templates/order/sales_order_base.html:135 -#: templates/js/translated/build.js:1663 +#: build/templates/build/detail.html:126 +#: order/templates/order/order_base.html:143 +#: order/templates/order/sales_order_base.html:157 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" -#: build/templates/build/detail.html:138 +#: build/templates/build/detail.html:137 msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:147 +#: build/templates/build/detail.html:146 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:158 build/templates/build/sidebar.html:17 +#: build/templates/build/detail.html:157 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:173 +#: build/templates/build/detail.html:172 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1202 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" -#: build/templates/build/detail.html:178 +#: build/templates/build/detail.html:177 msgid "Unallocate Stock" msgstr "" -#: build/templates/build/detail.html:180 -msgid "Allocate stock to build" +#: build/templates/build/detail.html:179 +msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:181 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:180 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:183 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:184 +#: build/templates/build/detail.html:186 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:185 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:173 +#: build/templates/build/detail.html:187 +#: company/templates/company/detail.html:37 +#: company/templates/company/detail.html:84 order/views.py:463 +#: part/templates/part/category.html:174 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:197 +#: build/templates/build/detail.html:199 msgid "Untracked stock has been fully allocated for this Build Order" msgstr "" -#: build/templates/build/detail.html:201 +#: build/templates/build/detail.html:203 msgid "Untracked stock has not been fully allocated for this Build Order" msgstr "" -#: build/templates/build/detail.html:208 +#: build/templates/build/detail.html:210 msgid "Allocate selected items" msgstr "" -#: build/templates/build/detail.html:218 +#: build/templates/build/detail.html:220 msgid "This Build Order does not have any associated untracked BOM items" msgstr "" -#: build/templates/build/detail.html:227 +#: build/templates/build/detail.html:229 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:231 +#: build/templates/build/detail.html:233 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:232 +#: build/templates/build/detail.html:234 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:246 +#: build/templates/build/detail.html:248 msgid "Output Actions" msgstr "" -#: build/templates/build/detail.html:250 -msgid "Complete selected items" +#: build/templates/build/detail.html:252 +msgid "Complete selected build outputs" msgstr "" -#: build/templates/build/detail.html:251 +#: build/templates/build/detail.html:253 msgid "Complete outputs" msgstr "" -#: build/templates/build/detail.html:266 +#: build/templates/build/detail.html:255 +msgid "Delete selected build outputs" +msgstr "" + +#: build/templates/build/detail.html:256 +msgid "Delete outputs" +msgstr "" + +#: build/templates/build/detail.html:263 +#: stock/templates/stock/location.html:188 templates/stock_table.html:27 +msgid "Printing Actions" +msgstr "" + +#: build/templates/build/detail.html:267 build/templates/build/detail.html:268 +#: stock/templates/stock/location.html:192 templates/stock_table.html:31 +msgid "Print labels" +msgstr "" + +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:60 -#: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 -#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 -#: stock/templates/stock/stock_sidebar.html:19 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:294 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:298 build/templates/build/detail.html:453 -#: company/templates/company/detail.html:188 -#: company/templates/company/detail.html:215 -#: order/templates/order/purchase_order_detail.html:80 -#: order/templates/order/purchase_order_detail.html:108 -#: order/templates/order/sales_order_detail.html:72 -#: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 -#: stock/templates/stock/item.html:205 -msgid "Edit Notes" -msgstr "" - -#: build/templates/build/detail.html:477 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:478 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:300 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1364,91 +1550,35 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" -#: build/views.py:76 +#: build/views.py:73 msgid "Build was cancelled" msgstr "" -#: build/views.py:88 -msgid "Create Build Output" -msgstr "" - -#: build/views.py:106 -msgid "Maximum output quantity is " -msgstr "" - -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 -msgid "Serial numbers already exist" -msgstr "" - -#: build/views.py:131 -msgid "Serial numbers required for trackable build output" -msgstr "" - -#: build/views.py:197 -msgid "Delete Build Output" -msgstr "" - -#: build/views.py:218 -msgid "Confirm unallocation of build stock" -msgstr "" - -#: build/views.py:219 stock/views.py:385 -msgid "Check the confirmation box" -msgstr "" - -#: build/views.py:231 -msgid "Build output does not match build" -msgstr "" - -#: build/views.py:233 -msgid "Build output must be specified" -msgstr "" - -#: build/views.py:245 -msgid "Build output deleted" -msgstr "" - -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:114 msgid "Delete Build Order" msgstr "" -#: common/files.py:67 +#: common/files.py:65 msgid "Unsupported file format: {ext.upper()}" msgstr "" -#: common/files.py:69 +#: common/files.py:67 msgid "Error reading file (invalid encoding)" msgstr "" -#: common/files.py:74 +#: common/files.py:72 msgid "Error reading file (invalid format)" msgstr "" -#: common/files.py:76 +#: common/files.py:74 msgid "Error reading file (incorrect dimension)" msgstr "" -#: common/files.py:78 +#: common/files.py:76 msgid "Error reading file (data could be corrupted)" msgstr "" @@ -1469,704 +1599,936 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:970 common/models.py:1178 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:381 +msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:342 +#: common/models.py:383 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 -msgid "InvenTree Instance Name" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:711 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:726 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:731 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:30 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2429 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:373 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:385 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:894 -#: templates/js/translated/table_filters.js:389 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:905 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:910 -#: templates/js/translated/table_filters.js:397 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:900 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:147 +#: common/models.py:848 part/models.py:996 +#: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:886 +msgid "Show Price History" +msgstr "" + +#: common/models.py:887 +msgid "Display historical pricing for Part" +msgstr "" + +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 -msgid "Group by Part" -msgstr "" - -#: common/models.py:883 -msgid "Group stock items by part reference in table views" -msgstr "" - -#: common/models.py:889 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1001 -msgid "Show subscribed parts" +#: common/models.py:1083 +msgid "Enforce MFA" msgstr "" -#: common/models.py:1002 -msgid "Show subscribed parts on the homepage" +#: common/models.py:1084 +msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1007 -msgid "Show subscribed categories" +#: common/models.py:1090 +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1008 -msgid "Show subscribed part categories on the homepage" -msgstr "" - -#: common/models.py:1013 -msgid "Show latest parts" -msgstr "" - -#: common/models.py:1014 -msgid "Show latest parts on the homepage" -msgstr "" - -#: common/models.py:1019 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1020 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1026 -msgid "Show unvalidated BOMs" -msgstr "" - -#: common/models.py:1027 -msgid "Show BOMs that await validation on the homepage" -msgstr "" - -#: common/models.py:1032 -msgid "Show recent stock changes" -msgstr "" - -#: common/models.py:1033 -msgid "Show recently changed stock items on the homepage" -msgstr "" - -#: common/models.py:1038 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1039 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1044 -msgid "Show low stock" -msgstr "" - -#: common/models.py:1045 -msgid "Show low stock items on the homepage" -msgstr "" - -#: common/models.py:1050 -msgid "Show depleted stock" -msgstr "" - -#: common/models.py:1051 -msgid "Show depleted stock items on the homepage" -msgstr "" - -#: common/models.py:1056 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1057 -msgid "Show stock items needed for builds on the homepage" -msgstr "" - -#: common/models.py:1062 -msgid "Show expired stock" -msgstr "" - -#: common/models.py:1063 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1068 -msgid "Show stale stock" -msgstr "" - -#: common/models.py:1069 -msgid "Show stale stock items on the homepage" -msgstr "" - -#: common/models.py:1074 -msgid "Show pending builds" -msgstr "" - -#: common/models.py:1075 -msgid "Show pending builds on the homepage" -msgstr "" - -#: common/models.py:1080 -msgid "Show overdue builds" -msgstr "" - -#: common/models.py:1081 -msgid "Show overdue builds on the homepage" -msgstr "" - -#: common/models.py:1086 -msgid "Show outstanding POs" -msgstr "" - -#: common/models.py:1087 -msgid "Show outstanding POs on the homepage" -msgstr "" - -#: common/models.py:1092 -msgid "Show overdue POs" -msgstr "" - -#: common/models.py:1093 -msgid "Show overdue POs on the homepage" -msgstr "" - -#: common/models.py:1098 -msgid "Show outstanding SOs" +#: common/models.py:1091 +msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" #: common/models.py:1099 -msgid "Show outstanding SOs on the homepage" +msgid "Enable URL integration" msgstr "" -#: common/models.py:1104 -msgid "Show overdue SOs" +#: common/models.py:1100 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1105 -msgid "Show overdue SOs on the homepage" +#: common/models.py:1107 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1111 -msgid "Inline label display" +#: common/models.py:1108 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1112 -msgid "Display PDF labels in the browser, instead of downloading as a file" +#: common/models.py:1115 +msgid "Enable app integration" msgstr "" -#: common/models.py:1118 -msgid "Inline report display" +#: common/models.py:1116 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1119 -msgid "Display PDF reports in the browser, instead of downloading as a file" +#: common/models.py:1123 +msgid "Enable schedule integration" msgstr "" -#: common/models.py:1125 -msgid "Search Preview Results" +#: common/models.py:1124 +msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1126 -msgid "Number of results to show in search preview window" +#: common/models.py:1131 +msgid "Enable event integration" msgstr "" #: common/models.py:1132 -msgid "Search Show Stock" +msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1133 -msgid "Display stock levels in search preview window" +#: common/models.py:1147 common/models.py:1449 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1139 -msgid "Hide Inactive Parts" +#: common/models.py:1178 +msgid "Show subscribed parts" msgstr "" -#: common/models.py:1140 -msgid "Hide inactive parts in search preview window" +#: common/models.py:1179 +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1146 -msgid "Show Quantity in Forms" +#: common/models.py:1185 +msgid "Show subscribed categories" msgstr "" -#: common/models.py:1147 -msgid "Display available part quantity in some forms" +#: common/models.py:1186 +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1153 -msgid "Escape Key Closes Forms" +#: common/models.py:1192 +msgid "Show latest parts" msgstr "" -#: common/models.py:1154 -msgid "Use the escape key to close modal forms" +#: common/models.py:1193 +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1160 -msgid "Fixed Navbar" +#: common/models.py:1199 +msgid "Recent Part Count" msgstr "" -#: common/models.py:1161 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1200 +msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1226 company/forms.py:43 -msgid "Price break quantity" +#: common/models.py:1206 +msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1233 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 -msgid "Price" +#: common/models.py:1207 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1213 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1214 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1220 +msgid "Recent Stock Count" +msgstr "" + +#: common/models.py:1221 +msgid "Number of recent stock items to display on index page" +msgstr "" + +#: common/models.py:1227 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1228 +msgid "Show low stock items on the homepage" msgstr "" #: common/models.py:1234 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1235 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1241 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1242 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1248 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1249 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1255 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1256 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:1262 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:1263 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:1269 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:1270 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:1276 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:1277 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:1283 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:1284 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:1290 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:1291 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:1297 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:1298 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:1304 +msgid "Enable email notifications" +msgstr "" + +#: common/models.py:1305 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: common/models.py:1311 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1312 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1318 +msgid "Inline label display" +msgstr "" + +#: common/models.py:1319 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:1325 +msgid "Inline report display" +msgstr "" + +#: common/models.py:1326 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:1332 +msgid "Search Parts" +msgstr "" + +#: common/models.py:1333 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:1339 +msgid "Search Categories" +msgstr "" + +#: common/models.py:1340 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:1346 +msgid "Search Stock" +msgstr "" + +#: common/models.py:1347 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:1353 +msgid "Search Locations" +msgstr "" + +#: common/models.py:1354 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:1360 +msgid "Search Companies" +msgstr "" + +#: common/models.py:1361 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:1367 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:1368 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:1374 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:1375 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:1381 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:1382 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:1388 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:1389 +msgid "Hide inactive parts in search preview window" +msgstr "" + +#: common/models.py:1395 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:1396 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:1402 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:1403 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:1409 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:1416 +msgid "Date Format" +msgstr "" + +#: common/models.py:1417 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:1431 part/templates/part/detail.html:39 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1432 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1490 company/forms.py:43 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 +msgid "Price" +msgstr "" + +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:24 order/views.py:289 -#: part/templates/part/bom_upload/upload_file.html:52 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:212 -#: part/views.py:858 +#: common/models.py:1655 common/models.py:1794 +msgid "Endpoint" +msgstr "" + +#: common/models.py:1656 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:1665 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 +#: templates/js/translated/table_filters.js:34 +#: templates/js/translated/table_filters.js:96 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 +msgid "Active" +msgstr "" + +#: common/models.py:1671 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:1685 +msgid "Token" +msgstr "" + +#: common/models.py:1686 +msgid "Token for access" +msgstr "" + +#: common/models.py:1693 +msgid "Secret" +msgstr "" + +#: common/models.py:1694 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:1761 +msgid "Message ID" +msgstr "" + +#: common/models.py:1762 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:1770 +msgid "Host" +msgstr "" + +#: common/models.py:1771 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:1778 +msgid "Header" +msgstr "" + +#: common/models.py:1779 +msgid "Header of this message" +msgstr "" + +#: common/models.py:1785 +msgid "Body" +msgstr "" + +#: common/models.py:1786 +msgid "Body of this message" +msgstr "" + +#: common/models.py:1795 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:1800 +msgid "Worked on" +msgstr "" + +#: common/models.py:1801 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 +#: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" -#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52 -#: order/views.py:290 part/templates/part/bom_upload/match_fields.html:52 +#: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:213 -#: part/views.py:859 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2182,19 +2544,15 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:517 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:47 -#: part/templates/part/bom_upload/match_fields.html:27 -#: part/templates/part/bom_upload/match_parts.html:19 -#: part/templates/part/bom_upload/upload_file.html:50 -#: part/templates/part/import_wizard/match_fields.html:27 +#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 #: part/templates/part/import_wizard/match_references.html:19 -#: part/templates/part/import_wizard/part_upload.html:45 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 msgid "Previous Step" msgstr "" #: company/forms.py:24 part/forms.py:46 +#: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" @@ -2211,6 +2569,7 @@ msgid "Description of the company" msgstr "" #: company/models.py:112 company/templates/company/company_base.html:97 +#: templates/InvenTree/settings/plugin_settings.html:55 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2236,7 +2595,7 @@ msgid "Contact phone number" msgstr "" #: company/models.py:125 company/templates/company/company_base.html:129 -#: templates/InvenTree/settings/user.html:47 +#: templates/InvenTree/settings/user.html:48 msgid "Email" msgstr "" @@ -2256,7 +2615,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:807 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2285,7 +2644,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2293,38 +2653,39 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:135 +#: company/models.py:320 company/models.py:535 stock/models.py:611 +#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" -#: company/models.py:324 company/models.py:539 order/views.py:912 +#: company/models.py:324 company/models.py:539 msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:374 +#: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 -#: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:517 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 -#: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:533 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2337,9 +2698,9 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:384 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 +#: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2349,8 +2710,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2358,10 +2719,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 +#: templates/InvenTree/settings/settings.html:325 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2374,27 +2735,28 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 -#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:391 +#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 +#: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2411,22 +2773,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2588 report/templates/report/inventree_po_report.html:93 -#: report/templates/report/inventree_so_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1748 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1748 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:507 stock/templates/stock/item_base.html:332 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2434,7 +2797,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1750 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2442,6 +2805,10 @@ msgstr "" msgid "Order multiple" msgstr "" +#: company/models.py:708 +msgid "last updated" +msgstr "" + #: company/serializers.py:70 msgid "Default currency used for this supplier" msgstr "" @@ -2452,12 +2819,12 @@ msgstr "" #: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322 +#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322 msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:121 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2493,11 +2860,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:567 -#: order/templates/order/sales_order_base.html:115 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:284 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 +#: stock/templates/stock/item_base.html:274 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2510,115 +2879,117 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:464 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" -#: company/templates/company/detail.html:15 +#: company/templates/company/detail.html:14 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:124 +#: templates/InvenTree/search.html:118 msgid "Supplier Parts" msgstr "" -#: company/templates/company/detail.html:19 +#: company/templates/company/detail.html:18 #: order/templates/order/order_wizard/select_parts.html:44 msgid "Create new supplier part" msgstr "" -#: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:333 +#: company/templates/company/detail.html:19 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:32 -#: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:167 part/templates/part/detail.html:342 -#: part/templates/part/detail.html:370 +#: company/templates/company/detail.html:31 +#: company/templates/company/detail.html:78 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:84 -#: part/templates/part/category.html:173 +#: company/templates/company/detail.html:36 +#: company/templates/company/detail.html:83 +#: part/templates/part/category.html:174 msgid "Order parts" msgstr "" +#: company/templates/company/detail.html:41 +#: company/templates/company/detail.html:88 +msgid "Delete parts" +msgstr "" + #: company/templates/company/detail.html:42 #: company/templates/company/detail.html:89 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:90 msgid "Delete Parts" msgstr "" -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109 +#: company/templates/company/detail.html:61 templates/InvenTree/search.html:103 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:65 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:107 +#: company/templates/company/detail.html:106 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:117 +#: company/templates/company/detail.html:116 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 -#: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 +#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:121 +#: company/templates/company/detail.html:120 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:121 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:143 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:20 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 -#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 -#: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 +#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 +#: templates/InvenTree/settings/sidebar.html:49 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:147 +#: company/templates/company/detail.html:146 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:148 +#: company/templates/company/detail.html:147 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:999 +#: company/templates/company/detail.html:167 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2626,15 +2997,15 @@ msgstr "" msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:413 +#: company/templates/company/detail.html:375 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" -#: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:414 +#: company/templates/company/detail.html:376 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2642,83 +3013,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184 -#: templates/navbar.html:44 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 -#: templates/js/translated/company.js:562 +#: company/templates/company/manufacturer_part.html:41 +#: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 -#: templates/js/translated/company.js:563 +#: company/templates/company/manufacturer_part.html:45 +#: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:194 templates/navbar.html:43 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:344 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 -#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 -#: users/models.py:204 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 +#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:175 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part.html:65 +#: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:869 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -2739,19 +3110,19 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:396 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 +#: stock/templates/stock/item_base.html:386 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part.html:38 -#: templates/js/translated/company.js:860 +#: templates/js/translated/company.js:863 msgid "Edit supplier part" msgstr "" #: company/templates/company/supplier_part.html:42 -#: templates/js/translated/company.js:861 +#: templates/js/translated/company.js:864 msgid "Delete supplier part" msgstr "" @@ -2761,13 +3132,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 +#: part/templates/part/detail.html:23 stock/templates/stock/location.html:167 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -2777,18 +3148,18 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:68 +#: part/templates/part/detail.html:81 msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 -#: company/templates/company/supplier_part.html:290 -#: part/templates/part/prices.html:271 part/views.py:1717 +#: company/templates/company/supplier_part.html:298 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -2796,11 +3167,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1779 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1765 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -2812,16 +3185,20 @@ msgstr "" msgid "Delete price break" msgstr "" +#: company/templates/company/supplier_part.html:273 +msgid "Last updated" +msgstr "" + #: company/templates/company/supplier_part_navbar.html:15 #: part/templates/part/part_sidebar.html:14 -#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 -#: templates/InvenTree/search.html:156 -#: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/InvenTree/search.html:150 +#: templates/InvenTree/settings/sidebar.html:43 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -2835,17 +3212,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:133 -#: stock/templates/stock/location.html:147 -#: stock/templates/stock/location.html:159 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 +#: stock/templates/stock/location.html:138 +#: stock/templates/stock/location.html:152 +#: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 -#: templates/stats.html:93 templates/stats.html:102 users/models.py:43 +#: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2857,8 +3236,8 @@ msgstr "" msgid "New Manufacturer" msgstr "" -#: company/views.py:61 templates/InvenTree/search.html:214 -#: templates/navbar.html:55 +#: company/views.py:61 templates/InvenTree/search.html:208 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -2866,7 +3245,7 @@ msgstr "" msgid "New Customer" msgstr "" -#: company/views.py:69 +#: company/views.py:69 templates/js/translated/search.js:159 msgid "Companies" msgstr "" @@ -2874,24 +3253,24 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:584 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:616 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:623 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:632 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" -#: label/api.py:57 report/api.py:203 +#: label/api.py:97 report/api.py:203 msgid "No valid objects provided to template" msgstr "" @@ -2911,7 +3290,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -2935,7 +3314,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -2948,7 +3327,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -2960,283 +3339,408 @@ msgstr "" msgid "Part query filters (comma-separated value of key=value pairs)" msgstr "" -#: order/forms.py:26 order/templates/order/order_base.html:52 +#: order/forms.py:24 order/templates/order/order_base.html:52 msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:60 +#: order/forms.py:35 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" -#: order/forms.py:48 order/forms.py:59 order/templates/order/order_base.html:47 +#: order/forms.py:46 order/forms.py:57 order/templates/order/order_base.html:47 #: order/templates/order/sales_order_base.html:60 msgid "Cancel order" msgstr "" -#: order/forms.py:70 -msgid "Ship order" -msgstr "" - -#: order/forms.py:98 -msgid "Enter stock item serial numbers" -msgstr "" - -#: order/forms.py:104 -msgid "Enter quantity of stock items" -msgstr "" - -#: order/models.py:161 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:163 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:171 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:178 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:183 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:250 order/models.py:557 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:255 order/models.py:572 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:264 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:669 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:267 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:274 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:279 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:280 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:285 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:286 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:292 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:321 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:431 -msgid "Quantity must be an integer" -msgstr "" - -#: order/models.py:435 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:568 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:574 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:574 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:579 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:589 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:633 -msgid "SalesOrder cannot be shipped as it is not currently pending" +#: order/models.py:686 +msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:730 +#: order/models.py:690 +msgid "Only a pending order can be marked as complete" +msgstr "" + +#: order/models.py:693 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:696 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:736 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:738 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: order/models.py:874 +msgid "Target shipping date for this line item" +msgstr "" + +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:769 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:346 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: report/templates/report/inventree_po_report.html:76 +#: stock/templates/stock/item_base.html:336 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:790 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:151 -#: order/templates/order/sales_order_base.html:155 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:798 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:353 -#: templates/js/translated/stock.js:1354 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:343 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:806 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:814 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:866 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:867 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:946 order/models.py:948 +#: order/models.py:1067 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1154 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1161 +msgid "Checked By" +msgstr "" + +#: order/models.py:1162 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1170 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1177 +msgid "Shipment notes" +msgstr "" + +#: order/models.py:1184 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1185 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1195 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1198 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:952 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:954 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:957 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:961 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:967 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:975 +#: order/models.py:1315 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1316 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:987 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 +msgid "Shipment" +msgstr "" + +#: order/models.py:1333 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:988 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:991 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:341 templates/js/translated/order.js:600 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:349 templates/js/translated/order.js:611 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:399 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" +#: order/serializers.py:812 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:862 order/serializers.py:965 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:884 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:978 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1002 order/serializers.py:1127 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1005 order/serializers.py:1130 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1057 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1067 +msgid "The following serial numbers are already allocated" +msgstr "" + #: order/templates/order/delete_attachment.html:5 #: stock/templates/stock/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" @@ -3266,11 +3770,12 @@ msgid "Receive items" msgstr "" #: order/templates/order/order_base.html:58 -#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:30 msgid "Receive Items" msgstr "" -#: order/templates/order/order_base.html:62 order/views.py:185 +#: order/templates/order/order_base.html:62 +#: order/templates/order/sales_order_base.html:67 order/views.py:181 msgid "Complete Order" msgstr "" @@ -3289,12 +3794,28 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:137 +#: order/templates/order/order_base.html:124 +#: order/templates/order/sales_order_base.html:128 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:130 +#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/sales_order_base.html:144 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:149 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:207 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3318,72 +3839,19 @@ msgstr "" msgid "After placing this purchase order, line items will no longer be editable." msgstr "" -#: order/templates/order/order_wizard/match_fields.html:9 -#: part/templates/part/bom_upload/match_fields.html:9 -#: part/templates/part/import_wizard/ajax_match_fields.html:9 -#: part/templates/part/import_wizard/match_fields.html:9 -msgid "Missing selections for the following required columns" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:20 -#: part/templates/part/bom_upload/match_fields.html:20 -#: part/templates/part/import_wizard/ajax_match_fields.html:20 -#: part/templates/part/import_wizard/match_fields.html:20 -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/bom_upload/match_fields.html:29 -#: part/templates/part/bom_upload/match_parts.html:21 -#: part/templates/part/import_wizard/match_fields.html:29 -#: part/templates/part/import_wizard/match_references.html:21 -msgid "Submit Selections" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:35 -#: part/templates/part/bom_upload/match_fields.html:35 -#: part/templates/part/import_wizard/ajax_match_fields.html:28 -#: part/templates/part/import_wizard/match_fields.html:35 -msgid "File Fields" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:42 -#: part/templates/part/bom_upload/match_fields.html:42 -#: part/templates/part/import_wizard/ajax_match_fields.html:35 -#: part/templates/part/import_wizard/match_fields.html:42 -msgid "Remove column" -msgstr "" - -#: order/templates/order/order_wizard/match_fields.html:60 -#: part/templates/part/bom_upload/match_fields.html:60 -#: part/templates/part/import_wizard/ajax_match_fields.html:53 -#: part/templates/part/import_wizard/match_fields.html:60 -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/bom_upload/match_fields.html:71 -#: part/templates/part/bom_upload/match_parts.html:53 -#: 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/build.js:240 templates/js/translated/build.js:1251 -#: templates/js/translated/order.js:377 -msgid "Remove row" -msgstr "" - #: order/templates/order/order_wizard/match_parts.html:12 -#: part/templates/part/bom_upload/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:21 +#: 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_parts.html:28 -#: part/templates/part/bom_upload/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" @@ -3393,23 +3861,27 @@ msgstr "" msgid "Select Supplier Part" msgstr "" +#: 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_references.html:49 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/bom_upload/upload_file.html:21 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3452,7 +3924,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3472,7 +3945,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3481,30 +3954,45 @@ msgstr "" msgid "Received Stock" msgstr "" -#: order/templates/order/purchase_order_detail.html:18 +#: order/templates/order/purchase_order_detail.html:17 msgid "Purchase Order Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:27 -#: order/templates/order/purchase_order_detail.html:181 -#: order/templates/order/sales_order_detail.html:23 -#: order/templates/order/sales_order_detail.html:157 +#: order/templates/order/purchase_order_detail.html:26 +#: order/templates/order/purchase_order_detail.html:182 +#: order/templates/order/sales_order_detail.html:22 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" -#: order/templates/order/purchase_order_detail.html:30 +#: order/templates/order/purchase_order_detail.html:29 msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:76 -#: order/templates/order/sales_order_detail.html:68 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3519,8 +4007,8 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:67 order/views.py:222 -msgid "Ship Order" +#: order/templates/order/sales_order_base.html:235 +msgid "Complete Sales Order" msgstr "" #: order/templates/order/sales_order_base.html:102 @@ -3528,17 +4016,21 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1086 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:195 +#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/sales_order_detail.html:100 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" #: order/templates/order/sales_order_cancel.html:8 -#: order/templates/order/sales_order_ship.html:9 -#: part/templates/part/bom_duplicate.html:12 #: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" msgstr "" @@ -3547,677 +4039,702 @@ msgstr "" msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: order/templates/order/sales_order_detail.html:18 +#: order/templates/order/sales_order_detail.html:17 msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_ship.html:10 -msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted." +#: order/templates/order/sales_order_detail.html:66 +#: order/templates/order/so_sidebar.html:8 +msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_ship.html:12 -msgid "Ensure that the order allocation is correct before shipping the order." +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 +msgid "Actions" msgstr "" -#: order/templates/order/sales_order_ship.html:18 -msgid "Some line items in this order have been over-allocated" +#: order/templates/order/sales_order_detail.html:79 +msgid "New Shipment" msgstr "" -#: order/templates/order/sales_order_ship.html:20 -msgid "Ensure that this is correct before shipping the order." -msgstr "" - -#: order/templates/order/sales_order_ship.html:27 -msgid "Shipping this order means that the order will no longer be editable." -msgstr "" - -#: order/templates/order/so_allocate_by_serial.html:9 -msgid "Allocate stock items by serial number" -msgstr "" - -#: order/views.py:103 +#: order/views.py:99 msgid "Cancel Order" msgstr "" -#: order/views.py:112 order/views.py:138 +#: order/views.py:108 order/views.py:134 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:115 order/views.py:141 +#: order/views.py:111 order/views.py:137 msgid "Order cannot be cancelled" msgstr "" -#: order/views.py:129 +#: order/views.py:125 msgid "Cancel sales order" msgstr "" -#: order/views.py:155 +#: order/views.py:151 msgid "Issue Order" msgstr "" -#: order/views.py:164 +#: order/views.py:160 msgid "Confirm order placement" msgstr "" -#: order/views.py:174 +#: order/views.py:170 msgid "Purchase order issued" msgstr "" -#: order/views.py:201 +#: order/views.py:197 msgid "Confirm order completion" msgstr "" -#: order/views.py:212 +#: order/views.py:208 msgid "Purchase order completed" msgstr "" -#: order/views.py:238 -msgid "Confirm order shipment" -msgstr "" - -#: order/views.py:244 -msgid "Could not ship order" -msgstr "" - -#: order/views.py:291 +#: order/views.py:245 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:535 +#: order/views.py:489 msgid "Update prices" msgstr "" -#: order/views.py:793 +#: order/views.py:747 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:846 -msgid "Allocate Serial Numbers" -msgstr "" - -#: order/views.py:891 -#, python-brace-format -msgid "Allocated {n} items" -msgstr "" - -#: order/views.py:907 -msgid "Select line item" -msgstr "" - -#: order/views.py:938 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - -#: order/views.py:948 -#, python-brace-format -msgid "{serial} is not in stock" -msgstr "" - -#: order/views.py:956 -#, python-brace-format -msgid "{serial} already allocated to an order" -msgstr "" - -#: order/views.py:1072 +#: order/views.py:858 msgid "Sales order not found" msgstr "" -#: order/views.py:1078 +#: order/views.py:864 msgid "Price not found" msgstr "" -#: order/views.py:1081 +#: order/views.py:867 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1086 +#: order/views.py:872 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:758 +#: part/api.py:509 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:529 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:547 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:579 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:659 +msgid "Valid" +msgstr "" + +#: part/api.py:660 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:665 +msgid "This option must be selected" +msgstr "" + +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:762 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:777 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:808 part/api.py:812 part/api.py:827 part/api.py:831 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:104 part/templates/part/part_base.html:331 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:185 +#: part/bom.py:126 templates/email/low_stock_notification.html:17 +msgid "Total Stock" +msgstr "" + +#: part/bom.py:127 part/templates/part/part_base.html:189 msgid "Available Stock" msgstr "" -#: part/forms.py:63 -msgid "File Format" +#: part/bom.py:128 part/templates/part/part_base.html:207 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 +msgid "On Order" msgstr "" -#: part/forms.py:63 -msgid "Select output file format" -msgstr "" - -#: part/forms.py:65 -msgid "Cascading" -msgstr "" - -#: part/forms.py:65 -msgid "Download cascading / multi-level BOM" -msgstr "" - -#: part/forms.py:67 -msgid "Levels" -msgstr "" - -#: part/forms.py:67 -msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" - -#: part/forms.py:69 -msgid "Include Parameter Data" -msgstr "" - -#: part/forms.py:69 -msgid "Include part parameters data in exported BOM" -msgstr "" - -#: part/forms.py:71 -msgid "Include Stock Data" -msgstr "" - -#: part/forms.py:71 -msgid "Include part stock data in exported BOM" -msgstr "" - -#: part/forms.py:73 -msgid "Include Manufacturer Data" -msgstr "" - -#: part/forms.py:73 -msgid "Include part manufacturer data in exported BOM" -msgstr "" - -#: part/forms.py:75 -msgid "Include Supplier Data" -msgstr "" - -#: part/forms.py:75 -msgid "Include part supplier data in exported BOM" -msgstr "" - -#: part/forms.py:96 part/models.py:2427 -msgid "Parent Part" -msgstr "" - -#: part/forms.py:97 part/templates/part/bom_duplicate.html:7 -msgid "Select parent part to copy BOM from" -msgstr "" - -#: part/forms.py:103 -msgid "Clear existing BOM items" -msgstr "" - -#: part/forms.py:109 -msgid "Confirm BOM duplication" -msgstr "" - -#: part/forms.py:127 -msgid "validate" -msgstr "" - -#: part/forms.py:127 -msgid "Confirm that the BOM is correct" -msgstr "" - -#: part/forms.py:163 +#: part/forms.py:84 msgid "Select part category" msgstr "" -#: part/forms.py:200 +#: part/forms.py:121 msgid "Add parameter template to same level categories" msgstr "" -#: part/forms.py:204 +#: part/forms.py:125 msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:224 +#: part/forms.py:145 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:85 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:85 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:124 -#: templates/InvenTree/search.html:101 templates/stats.html:84 +#: part/models.py:127 part/templates/part/category.html:128 +#: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:129 -#: part/templates/part/category.html:149 +#: part/models.py:368 part/templates/part/cat_link.html:3 +#: part/templates/part/category.html:17 part/templates/part/category.html:133 +#: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 -#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 -#: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 -#: templates/stats.html:80 templates/stats.html:89 users/models.py:41 +#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 +#: templates/InvenTree/settings/sidebar.html:39 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:450 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:502 part/models.py:514 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:611 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:615 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:620 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:715 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:740 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:747 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:748 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:758 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:759 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:765 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:82 -#: part/templates/part/part_base.html:302 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:771 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/part_base.html:265 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/InvenTree/notifications/notifications.html:65 +#: templates/InvenTree/settings/settings.html:224 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:779 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:785 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:791 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:554 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:814 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/part_base.html:340 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:862 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:869 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:870 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:196 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:876 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:883 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:889 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:895 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:901 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:906 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:911 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:915 templates/js/translated/table_filters.js:34 -#: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:368 -msgid "Active" -msgstr "" - -#: part/models.py:916 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:921 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:926 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:929 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:929 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:932 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:934 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:938 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1750 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2273 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2290 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2311 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2316 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2317 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2323 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2329 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2335 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2346 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2382 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2390 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2397 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2429 part/models.py:2478 part/models.py:2479 -#: templates/InvenTree/settings/settings.html:158 +#: part/models.py:2596 +msgid "Parent Part" +msgstr "" + +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 +#: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2431 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2431 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2483 templates/InvenTree/settings/settings.html:167 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2484 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2561 +#: part/models.py:2687 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 +msgid "Part ID" +msgstr "" + +#: part/models.py:2691 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:2694 +msgid "Part Name" +msgstr "" + +#: part/models.py:2698 +msgid "Part IPN" +msgstr "" + +#: part/models.py:2699 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:2702 +msgid "Level" +msgstr "" + +#: part/models.py:2703 +msgid "BOM level" +msgstr "" + +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2569 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2570 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2576 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2578 templates/js/translated/bom.js:454 -#: templates/js/translated/bom.js:528 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2578 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2581 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2582 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2585 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2588 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2590 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2590 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2594 templates/js/translated/bom.js:545 -#: templates/js/translated/bom.js:552 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2595 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2600 templates/js/translated/bom.js:537 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2601 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2695 part/models.py:2697 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2826 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2848 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2860 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:2868 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:2879 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:2883 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:2883 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:2915 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/tasks.py:53 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:934 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:935 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:940 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:941 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:946 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:947 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:952 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:953 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:997 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:998 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1025 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1068 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1071 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1074 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1083 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1091 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1110 +msgid "At least one BOM item is required" +msgstr "" + +#: part/tasks.py:18 msgid "Low stock notification" msgstr "" +#: part/tasks.py:19 +#, 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 "" @@ -4237,7 +4754,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4245,184 +4762,144 @@ msgstr "" msgid "Delete Items" msgstr "" -#: part/templates/part/bom_duplicate.html:13 -msgid "This part already has a Bill of Materials" -msgstr "" - -#: part/templates/part/bom_upload/match_parts.html:29 -msgid "Select Part" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:8 -msgid "Return to BOM" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:13 -msgid "Upload Bill of Materials" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:33 -msgid "Requirements for BOM upload" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:35 -msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:35 -msgid "BOM Upload Template" -msgstr "" - -#: part/templates/part/bom_upload/upload_file.html:36 -msgid "Each part must already exist in the database" -msgstr "" - -#: part/templates/part/bom_validate.html:6 -#, python-format -msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s" -msgstr "" - -#: part/templates/part/bom_validate.html:9 -msgid "This will validate each line in the BOM." -msgstr "" - -#: part/templates/part/category.html:24 part/templates/part/category.html:28 +#: part/templates/part/category.html:28 part/templates/part/category.html:32 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:32 +#: part/templates/part/category.html:36 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:38 +#: part/templates/part/category.html:42 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:43 +#: part/templates/part/category.html:47 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:44 +#: part/templates/part/category.html:48 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:52 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:49 +#: part/templates/part/category.html:53 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:57 +#: part/templates/part/category.html:61 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:58 +#: part/templates/part/category.html:62 msgid "New Category" msgstr "" -#: part/templates/part/category.html:76 part/templates/part/category.html:89 +#: part/templates/part/category.html:80 part/templates/part/category.html:93 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:90 +#: part/templates/part/category.html:94 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:110 part/templates/part/category.html:201 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:115 +#: part/templates/part/category.html:119 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:152 -msgid "Export Part Data" -msgstr "" - -#: part/templates/part/category.html:153 part/templates/part/category.html:177 -msgid "Export" -msgstr "" - -#: part/templates/part/category.html:156 +#: part/templates/part/category.html:157 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:158 templates/js/translated/bom.js:365 msgid "New Part" msgstr "" -#: part/templates/part/category.html:171 +#: part/templates/part/category.html:172 msgid "Set category" msgstr "" -#: part/templates/part/category.html:171 +#: part/templates/part/category.html:172 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:175 +#: part/templates/part/category.html:176 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:177 +#: part/templates/part/category.html:178 +msgid "Export" +msgstr "" + +#: part/templates/part/category.html:178 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:191 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:268 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:295 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category.html:332 +msgid "Create another part after this one" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category.html:333 +msgid "Part created successfully" +msgstr "" + +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4446,161 +4923,187 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:17 +#: part/templates/part/detail.html:20 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:29 -#, python-format -msgid "Showing stock for all variants of %(full_name)s" -msgstr "" - -#: part/templates/part/detail.html:39 +#: part/templates/part/detail.html:52 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:44 +#: part/templates/part/detail.html:57 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:101 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:142 +#: part/templates/part/detail.html:136 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:147 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:174 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:238 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:242 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:244 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:256 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:258 part/views.py:755 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:263 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:264 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:277 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:294 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:319 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:329 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:372 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:553 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:554 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:605 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:657 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:665 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:762 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:819 -msgid "Edit Part Notes" -msgstr "" - -#: part/templates/part/detail.html:932 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:944 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:956 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1045 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -4608,7 +5111,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -4625,208 +5128,206 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:28 -#: stock/templates/stock/location.html:29 +#: stock/templates/stock/item_base.html:35 +#: stock/templates/stock/location.html:34 msgid "Barcode actions" msgstr "" -#: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:32 -#: stock/templates/stock/location.html:31 templates/qr_button.html:1 +#: part/templates/part/part_base.html:46 +#: stock/templates/stock/item_base.html:39 +#: stock/templates/stock/location.html:36 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:32 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:57 +#: stock/templates/stock/location.html:38 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:51 +#: part/templates/part/part_base.html:55 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:103 -#: stock/templates/stock/location.html:40 +#: part/templates/part/part_base.html:60 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:47 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:63 +#: part/templates/part/part_base.html:67 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:69 +#: part/templates/part/part_base.html:73 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:84 +#: part/templates/part/part_base.html:88 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:87 +#: part/templates/part/part_base.html:91 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:90 +#: part/templates/part/part_base.html:94 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:97 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:112 +#: part/templates/part/part_base.html:116 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:116 +#: part/templates/part/part_base.html:120 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:120 +#: part/templates/part/part_base.html:124 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:124 +#: part/templates/part/part_base.html:128 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:128 +#: part/templates/part/part_base.html:132 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:132 +#: part/templates/part/part_base.html:136 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:138 -#: part/templates/part/part_base.html:146 +#: part/templates/part/part_base.html:142 +#: part/templates/part/part_base.html:150 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:139 -#: templates/js/translated/company.js:505 -#: templates/js/translated/company.js:762 -#: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: part/templates/part/part_base.html:143 +#: templates/js/translated/company.js:508 +#: templates/js/translated/company.js:765 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:156 -#: part/templates/part/part_base.html:572 +#: part/templates/part/part_base.html:160 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:173 +#: part/templates/part/part_base.html:177 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1546 -#: templates/js/translated/table_filters.js:188 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 +#: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1054 -msgid "On Order" -msgstr "" - -#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:217 -msgid "Required for Sales Orders" +#: part/templates/part/part_base.html:215 +msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -msgid "Allocated to Orders" +msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:295 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:442 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:320 +#: stock/templates/stock/item_base.html:166 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:485 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:566 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:520 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" @@ -4834,11 +5335,15 @@ msgstr "" msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:25 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:41 +#: part/templates/part/part_sidebar.html:46 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -4884,69 +5389,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1788 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -4954,9 +5459,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -4964,6 +5468,43 @@ msgstr "" 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 "" @@ -4973,213 +5514,290 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:92 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:142 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:214 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:502 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:561 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:663 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:689 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:692 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:704 -msgid "Duplicate BOM" -msgstr "" - -#: part/views.py:734 -msgid "Confirm duplication of BOM from parent" -msgstr "" - -#: part/views.py:776 -msgid "Confirm that the BOM is valid" -msgstr "" - #: part/views.py:787 -msgid "Validated Bill of Materials" -msgstr "" - -#: part/views.py:860 -msgid "Match Parts" -msgstr "" - -#: part/views.py:1196 -msgid "Export Bill of Materials" -msgstr "" - -#: part/views.py:1248 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1255 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:1264 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:1413 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1423 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1430 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1527 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1533 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1542 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1643 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1699 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1721 -msgid "Added new price break" +#: plugin/apps.py:52 +msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" -#: part/views.py:1797 -msgid "Edit Internal Price Break" +#: plugin/events.py:225 +msgid "Label printing failed" msgstr "" -#: part/views.py:1805 -msgid "Delete Internal Price Break" +#: plugin/integration.py:146 +msgid "No author found" msgstr "" -#: report/api.py:234 report/api.py:278 +#: plugin/integration.py:160 +msgid "No date found" +msgstr "" + +#: plugin/models.py:26 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:27 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:32 +msgid "Key" +msgstr "" + +#: plugin/models.py:33 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:41 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:47 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:182 +msgid "Plugin" +msgstr "" + +#: plugin/samples/integration/sample.py:42 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:43 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:49 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:50 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:55 +msgid "Package Name" +msgstr "" + +#: plugin/serializers.py:56 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:59 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:60 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:75 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:77 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5192,11 +5810,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:149 -#: templates/js/translated/build.js:233 templates/js/translated/build.js:637 -#: templates/js/translated/build.js:1013 -#: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5205,17 +5824,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin_settings.html:38 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5228,545 +5849,637 @@ msgid "Fail" msgstr "" #: report/templates/report/inventree_test_report_base.html:123 -#: stock/templates/stock/stock_sidebar.html:12 +#: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:422 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:179 -#: templates/js/translated/stock.js:1276 +#: stock/api.py:552 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:577 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 +#: stock/templates/stock/item_base.html:193 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" -#: stock/forms.py:92 stock/forms.py:266 +#: stock/forms.py:75 stock/forms.py:199 msgid "Expiration date for this stock item" msgstr "" -#: stock/forms.py:95 +#: stock/forms.py:78 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: stock/forms.py:150 +#: stock/forms.py:133 msgid "Destination for serialized stock (by default, will remain in current location)" msgstr "" -#: stock/forms.py:152 +#: stock/forms.py:135 msgid "Serial numbers" msgstr "" -#: stock/forms.py:152 +#: stock/forms.py:135 msgid "Unique serial numbers (must match quantity)" msgstr "" -#: stock/forms.py:154 stock/forms.py:238 +#: stock/forms.py:137 stock/forms.py:171 msgid "Add transaction note (optional)" msgstr "" -#: stock/forms.py:194 -msgid "Stock item to install" -msgstr "" - -#: stock/forms.py:224 -msgid "Must not exceed available quantity" -msgstr "" - -#: stock/forms.py:236 +#: stock/forms.py:169 msgid "Destination location for uninstalled items" msgstr "" -#: stock/forms.py:240 +#: stock/forms.py:173 msgid "Confirm uninstall" msgstr "" -#: stock/forms.py:240 +#: stock/forms.py:173 msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:410 +#: stock/models.py:93 stock/models.py:754 +#: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:292 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 -msgid "Scheduled for deletion" +#: stock/models.py:782 +msgid "Converted to part" msgstr "" -#: stock/models.py:631 -msgid "This StockItem will be deleted by the background worker" -msgstr "" - -#: stock/models.py:1094 +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1398 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1401 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1404 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1407 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1410 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1413 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1420 stock/serializers.py:832 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1424 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1428 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1432 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:2209 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:173 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 -msgid "Purchase currency of this stock item" -msgstr "" - -#: stock/serializers.py:287 +#: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:309 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:315 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:333 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:346 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 -msgid "StockItem primary key value" +#: stock/serializers.py:363 stock/views.py:1019 +msgid "Serial numbers already exist" msgstr "" -#: stock/serializers.py:584 -msgid "Stock transaction notes" +#: stock/serializers.py:405 +msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:421 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:428 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:646 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:650 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:654 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:684 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:690 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:698 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:708 stock/serializers.py:938 msgid "A list of stock items must be provided" msgstr "" -#: stock/templates/stock/item.html:18 +#: stock/serializers.py:796 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:801 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:802 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:807 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:808 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:818 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:900 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:928 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:29 +#: stock/templates/stock/item.html:22 msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:48 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:55 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:64 -#: stock/templates/stock/stock_sidebar.html:8 +#: stock/templates/stock/item.html:91 +#: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:72 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:76 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:133 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:137 stock/views.py:515 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:279 stock/templates/stock/item.html:304 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item.html:324 -msgid "Edit Test Result" -msgstr "" - -#: stock/templates/stock/item.html:338 -msgid "Delete Test Result" -msgstr "" - -#: stock/templates/stock/item_base.html:35 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: stock/templates/stock/item_base.html:42 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:37 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:21 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:46 +#: stock/templates/stock/item_base.html:54 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:65 +#: stock/templates/stock/item_base.html:70 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:69 -#: stock/templates/stock/location.html:47 templates/stock_table.html:50 +#: stock/templates/stock/item_base.html:74 +#: stock/templates/stock/location.html:54 templates/stock_table.html:47 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:77 templates/stock_table.html:45 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:80 templates/stock_table.html:46 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:78 +#: stock/templates/stock/item_base.html:83 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:82 -#: stock/templates/stock/location.html:53 +#: stock/templates/stock/item_base.html:87 +#: stock/templates/stock/location.html:60 templates/stock_table.html:48 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:85 +#: stock/templates/stock/item_base.html:90 templates/stock_table.html:51 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:93 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:91 +#: stock/templates/stock/item_base.html:96 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:91 +#: stock/templates/stock/item_base.html:96 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:100 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:100 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:108 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:113 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:152 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:158 +#: stock/templates/stock/item_base.html:161 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:183 +#: stock/templates/stock/item_base.html:170 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:183 -#: templates/js/translated/table_filters.js:247 +#: stock/templates/stock/item_base.html:197 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:185 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:185 -#: templates/js/translated/table_filters.js:253 +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:192 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:206 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:197 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:201 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:219 -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:226 +#: stock/templates/stock/item_base.html:224 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:227 +#: stock/templates/stock/item_base.html:225 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:238 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:248 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +#: stock/templates/stock/item_base.html:246 +msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:256 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +#: stock/templates/stock/item_base.html:254 +msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:260 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:266 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:270 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:1035 +#: stock/templates/stock/item_base.html:301 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:308 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:360 +#: stock/templates/stock/item_base.html:350 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:378 +#: stock/templates/stock/item_base.html:368 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:403 +#: stock/templates/stock/item_base.html:393 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:493 +#: stock/templates/stock/item_base.html:411 +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:412 +#: stock/templates/stock/location.html:118 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:486 msgid "Edit Stock Status" msgstr "" @@ -5779,39 +6492,6 @@ msgstr "" msgid "This will remove %(qty)s units of %(full_name)s from stock." msgstr "" -#: stock/templates/stock/item_install.html:8 -msgid "Install another Stock Item into this item." -msgstr "" - -#: stock/templates/stock/item_install.html:11 -#: stock/templates/stock/item_install.html:24 -msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" - -#: stock/templates/stock/item_install.html:14 -msgid "The Stock Item links to a Part which is in the BOM for this Stock Item" -msgstr "" - -#: stock/templates/stock/item_install.html:15 -msgid "The Stock Item is currently in stock" -msgstr "" - -#: stock/templates/stock/item_install.html:16 -msgid "The Stock Item is serialized and does not belong to another item" -msgstr "" - -#: stock/templates/stock/item_install.html:21 -msgid "Install this Stock Item in another stock item." -msgstr "" - -#: stock/templates/stock/item_install.html:27 -msgid "The part associated to this Stock Item belongs to another part's BOM" -msgstr "" - -#: stock/templates/stock/item_install.html:28 -msgid "This Stock Item is serialized and does not belong to another item" -msgstr "" - #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." msgstr "" @@ -5820,66 +6500,90 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:33 +#: stock/templates/stock/location.html:40 msgid "Check-in Items" msgstr "" -#: stock/templates/stock/location.html:61 +#: stock/templates/stock/location.html:68 msgid "Location actions" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:70 msgid "Edit location" msgstr "" -#: stock/templates/stock/location.html:65 +#: stock/templates/stock/location.html:72 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:75 +#: stock/templates/stock/location.html:81 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:76 +#: stock/templates/stock/location.html:82 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:95 -#: stock/templates/stock/location.html:101 +#: stock/templates/stock/location.html:100 +#: stock/templates/stock/location.html:106 msgid "Location Path" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:107 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:115 +#: stock/templates/stock/location.html:113 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:117 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:128 -#: stock/templates/stock/location.html:175 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:180 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 -#: templates/stats.html:97 users/models.py:42 +#: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:182 templates/stock_table.html:30 -msgid "Printing Actions" -msgstr "" - -#: stock/templates/stock/location.html:186 templates/stock_table.html:34 -msgid "Print labels" -msgstr "" - -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -5888,7 +6592,11 @@ msgstr "" msgid "Stock Tracking" msgstr "" -#: stock/templates/stock/stock_sidebar.html:16 +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" msgstr "" @@ -5896,7 +6604,7 @@ msgstr "" msgid "The following stock items will be uninstalled" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:912 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:631 msgid "Convert Stock Item" msgstr "" @@ -5917,119 +6625,135 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:162 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:269 stock/views.py:891 stock/views.py:1017 -#: stock/views.py:1299 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" -#: stock/views.py:284 +#: stock/views.py:274 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:303 -msgid "Assign to Customer" -msgstr "" - -#: stock/views.py:312 -msgid "Customer must be specified" -msgstr "" - -#: stock/views.py:336 +#: stock/views.py:293 msgid "Return to Stock" msgstr "" -#: stock/views.py:345 +#: stock/views.py:302 msgid "Specify a valid location" msgstr "" -#: stock/views.py:356 +#: stock/views.py:313 msgid "Stock item returned from customer" msgstr "" -#: stock/views.py:367 +#: stock/views.py:324 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:384 +#: stock/views.py:341 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:489 +#: stock/views.py:342 +msgid "Check the confirmation box" +msgstr "" + +#: stock/views.py:357 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:663 +#: stock/views.py:382 msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:771 +#: stock/views.py:490 msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:943 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:1044 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1268 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1368 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1381 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1392 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1399 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1408 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: 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:36 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:42 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + #: templates/InvenTree/index.html:7 msgid "Index" msgstr "" @@ -6058,6 +6782,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6090,12 +6818,72 @@ msgstr "" msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/search.html:8 -msgid "Search Results" +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" msgstr "" -#: templates/InvenTree/search.html:22 -msgid "Enter a search query" +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +msgid "Refresh Notification History" +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/inbox.html:16 +#: templates/InvenTree/notifications/inbox.html:17 +msgid "Refresh Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:51 +#: templates/InvenTree/settings/settings.html:314 +msgid "ID" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:57 +msgid "Age" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:88 +#: templates/InvenTree/settings/plugin.html:133 +msgid "Message" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:94 +#: templates/InvenTree/notifications/notifications.html:150 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:116 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:140 +msgid "No notification history found" +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 @@ -6139,30 +6927,163 @@ msgid "Server Settings" msgstr "" #: templates/InvenTree/settings/login.html:9 -#: templates/InvenTree/settings/sidebar.html:28 +#: templates/InvenTree/settings/sidebar.html:31 msgid "Login Settings" msgstr "" -#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5 +#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5 msgid "Signup" msgstr "" +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:43 +#: templates/InvenTree/settings/part.html:44 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:47 +#: templates/InvenTree/settings/part.html:48 msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:62 msgid "Part Parameter Templates" msgstr "" +#: templates/InvenTree/settings/plugin.html:10 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:16 +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:34 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:39 +#: templates/js/translated/plugin.js:15 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 +#: users/models.py:39 +msgid "Admin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin_settings.html:28 +msgid "Author" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:52 +#: templates/InvenTree/settings/plugin_settings.html:43 +msgid "Version" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 +msgid "Inactive plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:122 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:131 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:10 +#, python-format +msgid "Plugin details for %(name)s" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:17 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:48 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:62 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:71 +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:77 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:83 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:86 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:88 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:94 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:104 +#: templates/about.html:47 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +#: templates/about.html:40 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:112 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +msgid "Sign Status" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:122 +msgid "Sign Key" +msgstr "" + #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -6172,94 +7093,90 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:37 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:42 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:11 templates/navbar.html:93 -msgid "Settings" +#: templates/InvenTree/settings/settings.html:116 +msgid "Edit Plugin Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:65 +#: templates/InvenTree/settings/settings.html:118 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:65 +#: templates/InvenTree/settings/settings.html:120 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:148 +#: templates/InvenTree/settings/settings.html:209 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:170 -#: templates/InvenTree/settings/settings.html:269 +#: templates/InvenTree/settings/settings.html:231 +#: templates/InvenTree/settings/settings.html:330 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:171 -#: templates/InvenTree/settings/settings.html:270 +#: templates/InvenTree/settings/settings.html:232 +#: templates/InvenTree/settings/settings.html:331 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:249 +#: templates/InvenTree/settings/settings.html:310 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:253 -msgid "ID" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:8 +#: templates/InvenTree/settings/sidebar.html:9 #: templates/InvenTree/settings/user.html:12 msgid "Account Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:10 +#: templates/InvenTree/settings/sidebar.html:11 #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:12 +#: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" msgstr "" -#: templates/InvenTree/settings/sidebar.html:14 +#: templates/InvenTree/settings/sidebar.html:15 #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:16 +#: templates/InvenTree/settings/sidebar.html:19 msgid "Label Printing" msgstr "" -#: templates/InvenTree/settings/sidebar.html:18 -#: templates/InvenTree/settings/sidebar.html:34 +#: templates/InvenTree/settings/sidebar.html:21 +#: templates/InvenTree/settings/sidebar.html:37 msgid "Reporting" msgstr "" -#: templates/InvenTree/settings/sidebar.html:23 +#: templates/InvenTree/settings/sidebar.html:26 msgid "Global Settings" msgstr "" -#: templates/InvenTree/settings/sidebar.html:26 +#: templates/InvenTree/settings/sidebar.html:29 msgid "Server Configuration" msgstr "" -#: templates/InvenTree/settings/sidebar.html:32 +#: templates/InvenTree/settings/sidebar.html:35 msgid "Currencies" msgstr "" -#: templates/InvenTree/settings/sidebar.html:38 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Categories" msgstr "" @@ -6277,8 +7194,9 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 -#: templates/js/translated/helpers.js:26 +#: templates/InvenTree/settings/user.html:23 +#: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 msgid "Edit" msgstr "" @@ -6294,7 +7212,7 @@ msgstr "" msgid "Last Name" msgstr "" -#: templates/InvenTree/settings/user.html:55 +#: templates/InvenTree/settings/user.html:54 msgid "The following email addresses are associated with your account:" msgstr "" @@ -6319,148 +7237,177 @@ msgid "Re-send Verification" msgstr "" #: templates/InvenTree/settings/user.html:87 -#: templates/InvenTree/settings/user.html:154 +#: templates/InvenTree/settings/user.html:149 msgid "Remove" msgstr "" -#: templates/InvenTree/settings/user.html:94 +#: templates/InvenTree/settings/user.html:95 +#: templates/InvenTree/settings/user.html:201 msgid "Warning:" msgstr "" -#: templates/InvenTree/settings/user.html:95 +#: templates/InvenTree/settings/user.html:96 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:102 +#: templates/InvenTree/settings/user.html:104 msgid "Add Email Address" msgstr "" -#: templates/InvenTree/settings/user.html:112 -msgid "Enter e-mail address" -msgstr "" - -#: templates/InvenTree/settings/user.html:114 +#: templates/InvenTree/settings/user.html:109 msgid "Add Email" msgstr "" -#: templates/InvenTree/settings/user.html:124 +#: templates/InvenTree/settings/user.html:117 msgid "Social Accounts" msgstr "" -#: templates/InvenTree/settings/user.html:129 +#: templates/InvenTree/settings/user.html:122 msgid "You can sign in to your account using any of the following third party accounts:" msgstr "" -#: templates/InvenTree/settings/user.html:163 -msgid "There are no social network accounts connected to your InvenTree account" +#: templates/InvenTree/settings/user.html:157 +msgid "You currently have no social network accounts connected to this account." msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:162 msgid "Add a 3rd Party Account" msgstr "" -#: templates/InvenTree/settings/user.html:179 -msgid "Active Sessions" +#: templates/InvenTree/settings/user.html:172 +msgid "Multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:185 -msgid "Log out active sessions (except this one)" +#: templates/InvenTree/settings/user.html:177 +msgid "You have these factors available:" msgstr "" -#: templates/InvenTree/settings/user.html:186 -msgid "Log Out Active Sessions" +#: templates/InvenTree/settings/user.html:187 +msgid "TOTP" msgstr "" -#: templates/InvenTree/settings/user.html:195 -msgid "unknown on unknown" -msgstr "" - -#: templates/InvenTree/settings/user.html:196 -msgid "unknown" -msgstr "" - -#: templates/InvenTree/settings/user.html:200 -msgid "IP Address" -msgstr "" - -#: templates/InvenTree/settings/user.html:201 -msgid "Device" +#: templates/InvenTree/settings/user.html:193 +msgid "Static" msgstr "" #: templates/InvenTree/settings/user.html:202 +msgid "You currently do not have any factors set up." +msgstr "" + +#: templates/InvenTree/settings/user.html:209 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:210 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:212 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:220 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:226 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:227 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:236 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:237 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:241 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:242 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:243 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:211 +#: templates/InvenTree/settings/user.html:252 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:213 +#: templates/InvenTree/settings/user.html:254 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:224 +#: templates/InvenTree/settings/user.html:266 msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:25 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:35 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:46 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:54 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:63 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:79 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:81 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:88 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:91 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:93 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:95 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:95 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:101 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -6471,15 +7418,20 @@ msgstr "" msgid "Label Settings" msgstr "" +#: templates/InvenTree/settings/user_notifications.html:8 +msgid "Notification Settings" +msgstr "" + #: templates/about.html:10 msgid "InvenTree Version Information" msgstr "" #: templates/about.html:11 templates/about.html:105 -#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661 -#: templates/js/translated/modals.js:964 templates/modals.html:15 -#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620 +#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584 +#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986 +#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39 +#: templates/modals.html:50 msgid "Close" msgstr "" @@ -6499,14 +7451,6 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:40 -msgid "Commit Hash" -msgstr "" - -#: templates/about.html:47 -msgid "Commit Date" -msgstr "" - #: templates/about.html:53 msgid "InvenTree Documentation" msgstr "" @@ -6563,7 +7507,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -6662,6 +7598,71 @@ msgstr "" msgid "View in administration panel" msgstr "" +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:12 +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 tokens. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:27 +msgid "Generate backup tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:31 +#: templates/allauth_2fa/setup.html:40 +msgid "Back to settings" +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:14 +msgid "Disable Two-Factor" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:35 +msgid "Verify" +msgstr "" + #: templates/attachment_button.html:4 templates/js/translated/attachment.js:54 msgid "Add Link" msgstr "" @@ -6670,15 +7671,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:99 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:102 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:102 msgid "Contact your system administrator for further information" msgstr "" @@ -6700,14 +7701,16 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:991 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1129 -#: templates/js/translated/build.js:1749 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 +#: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -6716,23 +7719,10 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - -#: templates/email/low_stock_notification.html:7 -#, python-format -msgid " The available stock for %(part)s has fallen below the configured minimum level" -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:17 -msgid "Total Stock" -msgstr "" - #: templates/email/low_stock_notification.html:19 msgid "Minimum Quantity" msgstr "" @@ -6753,441 +7743,632 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1034 +#: templates/js/translated/api.js:190 templates/js/translated/modals.js:1056 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1057 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/translated/api.js:192 +#: templates/js/translated/api.js:197 msgid "Error 400: Bad request" msgstr "" -#: templates/js/translated/api.js:193 +#: templates/js/translated/api.js:198 msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1044 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1066 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1067 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1049 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1071 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1072 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1054 +#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1076 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1077 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1059 +#: templates/js/translated/api.js:217 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:218 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:222 templates/js/translated/modals.js:1081 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:223 templates/js/translated/modals.js:1082 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/translated/api.js:216 +#: templates/js/translated/api.js:226 msgid "Unhandled Error Code" msgstr "" -#: templates/js/translated/api.js:217 +#: templates/js/translated/api.js:227 msgid "Error code" msgstr "" -#: templates/js/translated/attachment.js:76 +#: templates/js/translated/attachment.js:78 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:98 +#: templates/js/translated/attachment.js:100 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:108 +#: templates/js/translated/attachment.js:110 msgid "Confirm Delete" msgstr "" -#: templates/js/translated/attachment.js:109 +#: templates/js/translated/attachment.js:111 msgid "Delete Attachment" msgstr "" -#: templates/js/translated/attachment.js:165 +#: templates/js/translated/attachment.js:167 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:178 +#: templates/js/translated/attachment.js:183 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:185 +#: templates/js/translated/attachment.js:190 msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1024 +#: templates/js/translated/barcode.js:183 +#: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:69 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:439 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:443 -#: templates/js/translated/barcode.js:573 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:485 -#: templates/js/translated/barcode.js:612 -msgid "Error transferring stock" +#: templates/js/translated/barcode.js:534 +msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:507 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:511 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:518 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:525 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:568 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:633 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:184 +#: templates/js/translated/bom.js:75 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:131 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:249 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 +msgid "Format" +msgstr "" + +#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 +#: templates/js/translated/order.js:456 +msgid "Select file format" +msgstr "" + +#: templates/js/translated/bom.js:294 +msgid "Cascading" +msgstr "" + +#: templates/js/translated/bom.js:295 +msgid "Download cascading / multi-level BOM" +msgstr "" + +#: templates/js/translated/bom.js:300 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:301 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:307 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:308 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:313 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:314 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:319 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:320 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:325 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:326 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:509 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:228 -msgid "Select and add a new variant item using the input below" +#: templates/js/translated/bom.js:565 +msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:239 +#: templates/js/translated/bom.js:576 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:245 +#: templates/js/translated/bom.js:582 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:284 +#: templates/js/translated/bom.js:621 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:285 +#: templates/js/translated/bom.js:622 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:404 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1111 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:413 -msgid "Open subassembly" +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 +msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:485 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:500 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:507 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 -msgid "Actions" -msgstr "" - -#: templates/js/translated/bom.js:616 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:618 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:620 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:718 templates/js/translated/build.js:855 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:774 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1095 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:996 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:78 +#: templates/js/translated/build.js:86 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:112 +#: templates/js/translated/build.js:120 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:133 +#: templates/js/translated/build.js:141 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:146 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:174 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 +#: templates/js/translated/stock.js:180 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 +#: templates/js/translated/stock.js:182 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:226 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:227 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:235 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:243 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:274 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:144 +#: templates/js/translated/build.js:285 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:153 +#: templates/js/translated/build.js:294 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:161 +#: templates/js/translated/build.js:302 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:184 +#: templates/js/translated/build.js:325 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:343 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:220 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:221 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:275 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:386 +#: templates/js/translated/build.js:583 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:603 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1072 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1082 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1107 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1124 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1194 templates/stock_table.html:52 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1262 -msgid "Specify stock allocation quantity" -msgstr "" - -#: templates/js/translated/build.js:1333 templates/js/translated/label.js:134 -#: templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1334 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1348 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:2024 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:2025 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1377 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1389 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1451 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1576 +#: templates/js/translated/build.js:2247 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:2248 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:2250 +msgid "If a location is specifed, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:2251 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:2252 +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:2273 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1613 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1686 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1737 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -7207,7 +8388,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:90 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -7235,65 +8416,65 @@ msgstr "" msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:386 +#: templates/js/translated/company.js:387 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:405 +#: templates/js/translated/company.js:406 msgid "The following manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:422 +#: templates/js/translated/company.js:423 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:477 +#: templates/js/translated/company.js:480 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:500 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:504 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:734 +#: templates/js/translated/company.js:737 msgid "No supplier parts found" msgstr "" #: templates/js/translated/filters.js:178 -#: templates/js/translated/filters.js:420 +#: templates/js/translated/filters.js:441 msgid "true" msgstr "" #: templates/js/translated/filters.js:182 -#: templates/js/translated/filters.js:421 +#: templates/js/translated/filters.js:442 msgid "false" msgstr "" @@ -7301,591 +8482,801 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:286 +#: templates/js/translated/filters.js:288 +msgid "Download data" +msgstr "" + +#: templates/js/translated/filters.js:291 msgid "Reload data" msgstr "" -#: templates/js/translated/filters.js:290 +#: templates/js/translated/filters.js:295 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:293 +#: templates/js/translated/filters.js:298 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:329 +#: templates/js/translated/filters.js:350 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365 -#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393 +#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366 +#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:352 +#: templates/js/translated/forms.js:353 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:367 +#: templates/js/translated/forms.js:368 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:381 +#: templates/js/translated/forms.js:382 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:395 +#: templates/js/translated/forms.js:396 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:680 +#: templates/js/translated/forms.js:627 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:702 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1072 templates/modals.html:19 +#: templates/js/translated/forms.js:1194 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1463 +#: templates/js/translated/forms.js:1623 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:1667 +#: templates/js/translated/forms.js:1833 templates/search.html:29 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:1884 +#: templates/js/translated/forms.js:2082 msgid "Clear input" msgstr "" -#: templates/js/translated/helpers.js:19 +#: templates/js/translated/forms.js:2547 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2559 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:20 msgid "YES" msgstr "" -#: templates/js/translated/helpers.js:21 +#: templates/js/translated/helpers.js:22 msgid "NO" msgstr "" -#: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/helpers.js:307 +msgid "Notes updated" +msgstr "" + +#: templates/js/translated/label.js:39 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/label.js:60 templates/js/translated/report.js:118 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/label.js:30 +#: templates/js/translated/label.js:61 msgid "Stock item(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:48 templates/js/translated/label.js:98 -#: templates/js/translated/label.js:153 +#: templates/js/translated/label.js:79 templates/js/translated/label.js:133 +#: templates/js/translated/label.js:191 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:49 +#: templates/js/translated/label.js:80 msgid "No labels found which match selected stock item(s)" msgstr "" -#: templates/js/translated/label.js:80 +#: templates/js/translated/label.js:115 msgid "Select Stock Locations" msgstr "" -#: templates/js/translated/label.js:81 +#: templates/js/translated/label.js:116 msgid "Stock location(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:99 +#: templates/js/translated/label.js:134 msgid "No labels found which match selected stock location(s)" msgstr "" -#: templates/js/translated/label.js:135 +#: templates/js/translated/label.js:173 msgid "Part(s) must be selected before printing labels" msgstr "" -#: templates/js/translated/label.js:154 +#: templates/js/translated/label.js:192 msgid "No labels found which match the selected part(s)" msgstr "" -#: templates/js/translated/label.js:228 +#: templates/js/translated/label.js:261 +msgid "Select Printer" +msgstr "" + +#: templates/js/translated/label.js:265 +msgid "Export to PDF" +msgstr "" + +#: templates/js/translated/label.js:304 msgid "stock items selected" msgstr "" -#: templates/js/translated/label.js:236 -msgid "Select Label" -msgstr "" - -#: templates/js/translated/label.js:251 +#: templates/js/translated/label.js:312 templates/js/translated/label.js:328 msgid "Select Label Template" msgstr "" -#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 +#: templates/js/translated/modals.js:610 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:118 -#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:963 +#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 +#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:117 +#: templates/js/translated/modals.js:118 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:380 +#: templates/js/translated/modals.js:392 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:539 +#: templates/js/translated/modals.js:551 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:592 +#: templates/js/translated/modals.js:609 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:649 +#: templates/js/translated/modals.js:666 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:915 +#: templates/js/translated/modals.js:937 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:915 +#: templates/js/translated/modals.js:937 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:927 +#: templates/js/translated/modals.js:949 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1024 +#: templates/js/translated/modals.js:1046 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1039 +#: templates/js/translated/modals.js:1061 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1062 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1063 +#: templates/js/translated/modals.js:1085 msgid "Error requesting form data" msgstr "" -#: templates/js/translated/model_renderers.js:40 +#: templates/js/translated/model_renderers.js:60 msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:77 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:130 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:147 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:182 -msgid "Part ID" -msgstr "" - -#: templates/js/translated/model_renderers.js:236 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:256 +#: templates/js/translated/model_renderers.js:302 +msgid "Shipment ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:293 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:322 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/order.js:48 +#: templates/js/translated/notification.js:231 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:235 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:259 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:300 templates/notifications.html:10 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:79 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/order.js:84 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/order.js:124 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/order.js:130 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/order.js:185 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:73 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:208 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 -msgid "Format" -msgstr "" - -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 -msgid "Select file format" -msgstr "" - -#: templates/js/translated/order.js:300 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:301 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:326 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:427 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:428 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:430 -msgid "Receive" +#: templates/js/translated/order.js:741 +msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:449 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:450 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 -msgid "Edit line item" +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 +msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:998 -msgid "Delete line item" -msgstr "" - -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 -msgid "No sales order allocations found" +#: templates/js/translated/order.js:1773 +msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1248 -msgid "Edit Stock Allocation" +#: templates/js/translated/order.js:1776 +msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1265 -msgid "Confirm Delete Operation" -msgstr "" - -#: templates/js/translated/order.js:1266 -msgid "Delete Stock Allocation" -msgstr "" - -#: templates/js/translated/order.js:1308 -msgid "Stock location not specified" -msgstr "" - -#: templates/js/translated/order.js:1557 -msgid "Fulfilled" -msgstr "" - -#: templates/js/translated/order.js:1601 -msgid "Allocate serial numbers" -msgstr "" - -#: templates/js/translated/order.js:1607 -msgid "Purchase stock" -msgstr "" - -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 -msgid "Calculate price" -msgstr "" - -#: templates/js/translated/order.js:1618 -msgid "Delete line item " -msgstr "" - -#: templates/js/translated/order.js:1741 -msgid "Allocate Stock Item" +#: templates/js/translated/order.js:1781 +msgid "Delete shipment" msgstr "" #: templates/js/translated/order.js:1801 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/order.js:1818 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/order.js:1852 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/order.js:1862 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/order.js:1886 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/order.js:1892 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/order.js:2260 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/order.js:2341 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2358 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/order.js:2359 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/order.js:2782 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/order.js:2788 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/order.js:2807 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/order.js:2810 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/order.js:2892 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 -msgid "Part Attributes" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" msgstr "" #: templates/js/translated/part.js:55 -msgid "Part Creation Options" +msgid "Part Attributes" msgstr "" #: templates/js/translated/part.js:59 -msgid "Part Duplication Options" +msgid "Part Creation Options" msgstr "" #: templates/js/translated/part.js:63 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:353 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 -msgid "Trackable part" +#: templates/js/translated/part.js:449 +msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 -msgid "Virtual part" +#: templates/js/translated/part.js:459 +msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 -msgid "Subscribed part" +#: templates/js/translated/part.js:462 +msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:461 -msgid "Salable part" +#: templates/js/translated/part.js:487 +msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:576 -msgid "No variants found" -msgstr "" - -#: templates/js/translated/part.js:765 -msgid "Delete part relationship" -msgstr "" - -#: templates/js/translated/part.js:789 -msgid "Delete Part Relationship" -msgstr "" - -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 -msgid "No parts found" -msgstr "" - -#: templates/js/translated/part.js:1026 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:1049 -#: templates/js/translated/table_filters.js:381 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:573 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:577 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:705 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1095 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1119 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:1223 +msgid "Not available" +msgstr "" + +#: templates/js/translated/part.js:1374 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:2108 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2141 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:2167 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" +#: templates/js/translated/plugin.js:22 +msgid "The Plugin was installed" +msgstr "" + #: templates/js/translated/report.js:67 msgid "items selected" msgstr "" @@ -7952,283 +9343,351 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/search.js:286 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:289 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:72 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 -msgid "Next available serial number" +#: templates/js/translated/stock.js:100 +msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 -msgid "Latest serial number" -msgstr "" - -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:109 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:303 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 -msgid "Export Stock" -msgstr "" - #: templates/js/translated/stock.js:431 -msgid "Include Sublocations" +msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 -msgid "Include stock items in sublocations" +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 +msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:474 -msgid "Transfer Stock" +#: templates/js/translated/stock.js:452 +msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:475 -msgid "Move" +#: templates/js/translated/stock.js:472 +msgid "No matching serial number" msgstr "" #: templates/js/translated/stock.js:481 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:604 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:605 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:682 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:683 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:685 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:686 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:772 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:773 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:868 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:869 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:1235 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1485 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1507 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 -msgid "Shipped to customer" -msgstr "" - -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 -msgid "Stock item has been allocated" +#: templates/js/translated/stock.js:1732 +msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1734 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 -#: templates/js/translated/table_filters.js:183 +#: templates/js/translated/stock.js:1756 +#: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 -msgid "items" -msgstr "" - -#: templates/js/translated/stock.js:1485 -msgid "batches" -msgstr "" - -#: templates/js/translated/stock.js:1512 -msgid "locations" -msgstr "" - -#: templates/js/translated/stock.js:1514 -msgid "Undefined location" -msgstr "" - -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 -msgid "Invalid date" -msgstr "" - -#: templates/js/translated/stock.js:1949 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2103 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" +#: templates/js/translated/stock.js:2657 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:2658 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:2660 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2661 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 +msgid "Select part to install" +msgstr "" + #: templates/js/translated/table_filters.js:56 msgid "Trackable Part" msgstr "" @@ -8246,7 +9705,7 @@ msgid "Allow Variant Stock" msgstr "" #: templates/js/translated/table_filters.js:110 -#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:183 msgid "Include sublocations" msgstr "" @@ -8256,54 +9715,54 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:358 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" #: templates/js/translated/table_filters.js:136 -#: templates/js/translated/table_filters.js:213 +#: templates/js/translated/table_filters.js:218 msgid "Is Serialized" msgstr "" #: templates/js/translated/table_filters.js:139 -#: templates/js/translated/table_filters.js:220 +#: templates/js/translated/table_filters.js:225 msgid "Serial number GTE" msgstr "" #: templates/js/translated/table_filters.js:140 -#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:226 msgid "Serial number greater than or equal to" msgstr "" #: templates/js/translated/table_filters.js:143 -#: templates/js/translated/table_filters.js:224 +#: templates/js/translated/table_filters.js:229 msgid "Serial number LTE" msgstr "" #: templates/js/translated/table_filters.js:144 -#: templates/js/translated/table_filters.js:225 +#: templates/js/translated/table_filters.js:230 msgid "Serial number less than or equal to" msgstr "" #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:216 -#: templates/js/translated/table_filters.js:217 +#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:222 msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:348 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -8324,183 +9783,239 @@ msgid "Item has been allocated" msgstr "" #: templates/js/translated/table_filters.js:179 -msgid "Include stock in sublocations" +msgid "Stock is available for use" msgstr "" #: templates/js/translated/table_filters.js:184 -msgid "Show stock items which are depleted" +msgid "Include stock in sublocations" msgstr "" #: templates/js/translated/table_filters.js:189 -msgid "Show items which are in stock" -msgstr "" - -#: templates/js/translated/table_filters.js:193 -msgid "In Production" +msgid "Show stock items which are depleted" msgstr "" #: templates/js/translated/table_filters.js:194 -msgid "Show items which are in production" +msgid "Show items which are in stock" msgstr "" #: templates/js/translated/table_filters.js:198 -msgid "Include Variants" +msgid "In Production" msgstr "" #: templates/js/translated/table_filters.js:199 -msgid "Include stock items for variant parts" +msgid "Show items which are in production" msgstr "" #: templates/js/translated/table_filters.js:203 -msgid "Installed" +msgid "Include Variants" msgstr "" #: templates/js/translated/table_filters.js:204 -msgid "Show stock items which are installed in another item" +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:208 +msgid "Installed" msgstr "" #: templates/js/translated/table_filters.js:209 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:214 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:229 -#: templates/js/translated/table_filters.js:230 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:235 msgid "Stock status" msgstr "" #: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:248 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:254 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:313 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:318 -#: templates/js/translated/table_filters.js:335 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:359 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:363 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:364 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:377 -msgid "Stock available" +#: templates/js/translated/table_filters.js:448 +msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:405 +#: templates/js/translated/table_filters.js:456 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" -#: templates/js/translated/tables.js:368 +#: templates/js/translated/tables.js:50 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:54 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:433 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:371 +#: templates/js/translated/tables.js:436 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:441 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:443 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:443 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 +#: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:450 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:453 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:456 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:459 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:462 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:465 msgid "All" msgstr "" -#: templates/navbar.html:40 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:52 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:86 users/models.py:39 -msgid "Admin" +#: templates/navbar.html:116 +msgid "Show Notifications" msgstr "" -#: templates/navbar.html:88 +#: templates/navbar.html:119 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:90 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:13 +msgid "Show all notifications and history" msgstr "" #: templates/qr_code.html:11 @@ -8515,6 +10030,26 @@ msgstr "" 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:16 +msgid "Filter results" +msgstr "" + +#: templates/search.html:20 +msgid "Close search menu" +msgstr "" + +#: templates/search.html:35 +msgid "No search results" +msgstr "" + #: templates/stats.html:9 msgid "Server" msgstr "" @@ -8539,86 +10074,102 @@ msgstr "" msgid "Server is deployed using docker" msgstr "" -#: templates/stats.html:40 -msgid "Server status" +#: templates/stats.html:39 +msgid "Plugin Support" msgstr "" #: templates/stats.html:43 -msgid "Healthy" +msgid "Plugin support enabled" msgstr "" #: templates/stats.html:45 -msgid "Issues detected" +msgid "Plugin support disabled" msgstr "" #: templates/stats.html:52 -msgid "Background Worker" +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:63 +#: templates/stats.html:75 msgid "Email Settings" msgstr "" -#: templates/stats.html:66 +#: templates/stats.html:78 msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:14 -msgid "Export Stock Information" -msgstr "" - -#: templates/stock_table.html:20 +#: templates/stock_table.html:17 msgid "Barcode Actions" msgstr "" -#: templates/stock_table.html:36 +#: templates/stock_table.html:33 msgid "Print test reports" msgstr "" -#: templates/stock_table.html:43 +#: templates/stock_table.html:40 msgid "Stock Options" msgstr "" -#: templates/stock_table.html:48 +#: templates/stock_table.html:45 msgid "Add to selected stock items" msgstr "" -#: templates/stock_table.html:49 +#: templates/stock_table.html:46 msgid "Remove from selected stock items" msgstr "" -#: templates/stock_table.html:50 +#: templates/stock_table.html:47 msgid "Stocktake selected stock items" msgstr "" -#: templates/stock_table.html:51 +#: templates/stock_table.html:48 msgid "Move selected stock items" msgstr "" -#: templates/stock_table.html:51 -msgid "Move stock" +#: templates/stock_table.html:49 +msgid "Merge selected stock items" msgstr "" -#: templates/stock_table.html:52 +#: templates/stock_table.html:49 +msgid "Merge stock" +msgstr "" + +#: templates/stock_table.html:50 msgid "Order selected items" msgstr "" -#: templates/stock_table.html:53 +#: templates/stock_table.html:52 msgid "Change status" msgstr "" -#: templates/stock_table.html:53 +#: templates/stock_table.html:52 msgid "Change stock status" msgstr "" -#: templates/stock_table.html:56 +#: templates/stock_table.html:55 msgid "Delete selected items" msgstr "" +#: templates/stock_table.html:55 +msgid "Delete stock" +msgstr "" + #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -8651,34 +10202,34 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:187 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:195 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:198 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:198 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:200 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:202 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:202 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:204 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.mo b/InvenTree/locale/fa/LC_MESSAGES/django.mo deleted file mode 100644 index 2c90dd0c81..0000000000 Binary files a/InvenTree/locale/fa/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index ae76c1b8e4..567141b708 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -1,30 +1,29 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-19 06:34+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" +"Last-Translator: \n" +"Language-Team: Persian\n" +"Language: fa_IR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: fa\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" -msgstr "" +msgstr "Address e API peida nashod" #: InvenTree/api.py:103 msgid "No action specified" -msgstr "" +msgstr "هیچ عملیات کاربر-محوری، مشخص نشده است" #: InvenTree/api.py:118 msgid "No matching action found" @@ -36,12 +35,13 @@ msgstr "" #: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 #: order/forms.py:57 templates/account/email_confirm.html:20 +#: templates/js/translated/forms.js:601 msgid "Confirm" -msgstr "" +msgstr "تایید" #: InvenTree/forms.py:142 msgid "Confirm delete" -msgstr "" +msgstr "تائید حذف" #: InvenTree/forms.py:143 msgid "Confirm item deletion" @@ -79,36 +79,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 #: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -121,7 +130,8 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2165 +#: InvenTree/models.py:197 stock/models.py:2202 +#: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -130,17 +140,19 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 +#: templates/js/translated/company.js:540 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:208 +#: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" msgstr "" @@ -148,11 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2369 -#: part/models.py:2389 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -189,30 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2553 plugin/models.py:40 report/models.py:177 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:49 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 #: part/templates/part/set_category.html:14 report/models.py:190 -#: report/models.py:553 report/models.py:592 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 +#: templates/js/translated/company.js:551 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -224,7 +249,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2872 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -278,91 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "French" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hebrew" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Hungarian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Italian" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Japanese" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Korean" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Dutch" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Norwegian" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Polish" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Portugese" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Russian" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Swedish" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Thai" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Turkish" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 -msgid "Vietnamese" +msgid "Dutch" msgstr "" #: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -379,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -408,7 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -488,7 +522,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" @@ -496,7 +530,7 @@ msgstr "" msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" @@ -560,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -639,14 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -656,11 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2783 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -679,12 +717,12 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2315 part/models.py:2331 part/models.py:2350 -#: part/models.py:2367 part/models.py:2469 part/models.py:2591 -#: part/models.py:2681 part/models.py:2758 part/models.py:3048 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -694,6 +732,19 @@ msgstr "" #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -709,14 +760,13 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" #: build/models.py:253 -msgid "" -"Select location to take stock from for this build (leave blank to take from " -"any stock location)" +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" #: build/models.py:258 @@ -751,30 +801,30 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:331 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" #: build/models.py:299 -msgid "" -"Target date for build completion. Build will be overdue after this date." +msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -782,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -791,10 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -803,25 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:372 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2065 stock/models.py:2171 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -841,62 +897,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 -msgid "" -"Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1171 +msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2774 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -908,22 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -939,169 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1274 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 -msgid "" -"Integer quantity required, as the bill of materials contains trackable parts" +#: build/serializers.py:216 +msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:565 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 -msgid "" -"Accept that stock items have not been fully allocated to this build order" +#: build/serializers.py:448 +msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 -msgid "" -"Accept that the required number of build outputs have not been completed" +#: build/serializers.py:464 +msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2898 -#: part/models.py:3040 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 -msgid "" -"Stock location where parts are to be sourced (leave blank to take from any " -"location)" +#: build/serializers.py:749 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1172,10 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1188,22 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1242,7 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1256,12 +1366,19 @@ msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 +#: templates/js/translated/table_filters.js:151 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1281,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1374,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:122 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1481,899 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2593 report/models.py:183 +#: common/models.py:806 part/models.py:2598 report/models.py:183 +#: templates/js/translated/table_filters.js:38 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 +#: templates/js/translated/table_filters.js:168 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 +#: templates/js/translated/table_filters.js:46 +#: templates/js/translated/table_filters.js:100 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 +#: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 -msgid "" -"Check that all plugins are installed on startup - enable in container " -"enviroments" +#: common/models.py:1091 +msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 +#: templates/js/translated/table_filters.js:34 +#: templates/js/translated/table_filters.js:96 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" #: common/views.py:93 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:243 part/views.py:208 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:209 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2415,6 +2569,7 @@ msgstr "" #: company/models.py:112 company/templates/company/company_base.html:97 #: templates/InvenTree/settings/plugin_settings.html:55 +#: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2459,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2488,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2496,8 +2652,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 -#: stock/templates/stock/item_base.html:142 +#: company/models.py:320 company/models.py:535 stock/models.py:611 +#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2506,22 +2662,29 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 +#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:517 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" -#: company/models.py:336 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 +#: templates/js/translated/company.js:533 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" -#: company/models.py:343 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2534,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2546,7 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2158 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2554,9 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2561 -#: part/templates/part/part_base.html:306 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2569,23 +2734,28 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 +#: templates/js/translated/company.js:337 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" -#: company/models.py:546 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:552 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2602,22 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2786 part/templates/part/upload_bom.html:59 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1871 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1871 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2625,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1873 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2647,11 +2818,12 @@ msgstr "" #: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:176 +#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322 msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2664,6 +2836,7 @@ msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 +#: templates/js/translated/company.js:265 msgid "Edit Company" msgstr "" @@ -2686,10 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2702,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:491 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2718,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2756,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2770,9 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 -#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:47 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2792,9 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 -#: templates/InvenTree/settings/sidebar.html:49 templates/navbar.html:58 +#: templates/InvenTree/settings/sidebar.html:49 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2810,6 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2818,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2833,80 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 +#: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 +#: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 -#: users/models.py:218 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 +#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -2927,16 +3109,19 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part.html:38 +#: templates/js/translated/company.js:863 msgid "Edit supplier part" msgstr "" #: company/templates/company/supplier_part.html:42 +#: templates/js/translated/company.js:864 msgid "Delete supplier part" msgstr "" @@ -2952,6 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -2966,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -2980,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3001,11 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 -#: templates/InvenTree/settings/sidebar.html:43 templates/navbar.html:28 +#: templates/InvenTree/settings/sidebar.html:43 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3019,17 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3042,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3050,7 +3244,7 @@ msgstr "" msgid "New Customer" msgstr "" -#: company/views.py:69 +#: company/views.py:69 templates/js/translated/search.js:159 msgid "Companies" msgstr "" @@ -3058,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3132,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:318 report/models.py:455 report/models.py:493 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3157,366 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 -msgid "" -"Expected date for order delivery. Order will be overdue after this date." +#: order/models.py:274 +msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 -msgid "" -"Target date for order completion. Order will be overdue after this date." +#: order/models.py:610 +msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3589,14 +3809,17 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" #: order/templates/order/order_cancel.html:8 -msgid "" -"Cancelling this order means that the order and line items will no longer be " -"editable." +msgid "Cancelling this order means that the order and line items will no longer be editable." msgstr "" #: order/templates/order/order_complete.html:7 @@ -3608,14 +3831,11 @@ msgid "This order has line items which have not been marked as received." msgstr "" #: order/templates/order/order_complete.html:11 -msgid "" -"Completing this order means that the order and line items will no longer be " -"editable." +msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" #: order/templates/order/order_issue.html:8 -msgid "" -"After placing this purchase order, line items will no longer be editable." +msgid "After placing this purchase order, line items will no longer be editable." msgstr "" #: order/templates/order/order_wizard/match_parts.html:12 @@ -3644,6 +3864,10 @@ msgstr "" #: 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_references.html:49 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3699,6 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3732,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3742,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3765,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3774,16 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3800,16 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -3880,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:356 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -3938,6 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -3969,13 +4215,13 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2637 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 -#: templates/InvenTree/search.html:95 templates/stats.html:96 +#: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 #: users/models.py:40 msgid "Part Categories" msgstr "" @@ -3985,8 +4231,9 @@ msgstr "" #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 -#: templates/InvenTree/settings/sidebar.html:39 templates/navbar.html:21 -#: templates/stats.html:92 templates/stats.html:101 users/models.py:41 +#: templates/InvenTree/settings/sidebar.html:39 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4011,457 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2690 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:320 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2387 part/models.py:2636 -#: part/templates/part/part_base.html:283 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:292 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:299 -#: report/models.py:196 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:365 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1873 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2437 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2454 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2474 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2475 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2480 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2481 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2486 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2487 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2492 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2493 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2498 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2499 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2510 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2546 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2554 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2561 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2591 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2593 part/models.py:2642 part/models.py:2643 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2595 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2595 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2647 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2648 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2682 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2685 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2686 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2689 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2693 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2694 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2697 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2698 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2759 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2767 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2768 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2774 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2776 part/templates/part/upload_bom.html:58 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 +#: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2776 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2779 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2780 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2783 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2786 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2788 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2788 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2792 part/templates/part/upload_bom.html:57 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 +#: templates/js/translated/table_filters.js:68 +#: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2793 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2798 part/templates/part/upload_bom.html:56 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2799 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2884 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2893 part/models.py:2895 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3007 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3029 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3041 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3049 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3060 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3064 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3064 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3096 -msgid "" -"Error creating relationship: check that the part is not related to itself " -"and that the relationship is unique" +#: part/models.py:3115 +msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4471,9 +4731,7 @@ msgstr "" #: part/tasks.py:19 #, python-brace-format -msgid "" -"The available stock for {part.name} has fallen below the configured minimum " -"level" +msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "" #: part/templates/part/bom.html:6 @@ -4487,9 +4745,7 @@ msgstr "" #: part/templates/part/bom.html:17 #, python-format -msgid "" -"The BOM for %(part)s was last checked by %(checker)s on " -"%(check_date)s" +msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" msgstr "" #: part/templates/part/bom.html:21 @@ -4497,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4549,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4562,7 +4818,7 @@ msgstr "" msgid "Create new part" msgstr "" -#: part/templates/part/category.html:158 +#: part/templates/part/category.html:158 templates/js/translated/bom.js:365 msgid "New Part" msgstr "" @@ -4586,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4617,15 +4873,11 @@ msgstr "" #: part/templates/part/category_delete.html:14 #, python-format -msgid "" -"If this category is deleted, these child categories will be moved to " -"%(category)s" +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:16 -msgid "" -"If this category is deleted, these child categories will be moved to the top " -"level part category" +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" #: part/templates/part/category_delete.html:23 @@ -4639,16 +4891,14 @@ msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -msgid "" -"If this category is deleted, these parts will be moved to the top level part " -"category" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4688,134 +4938,134 @@ msgstr "" msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4958,11 +5208,15 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:143 +#: templates/js/translated/company.js:508 +#: templates/js/translated/company.js:765 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:599 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -4971,138 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 +#: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:258 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:264 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:313 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:342 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:346 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:469 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:593 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5112,9 +5352,7 @@ msgstr "" #: part/templates/part/partial_delete.html:9 #, python-format -msgid "" -"Part '%(full_name)s' cannot be deleted as it is still " -"marked as active.\n" +msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n" "
Disable the \"Active\" part attribute and re-try.\n" " " msgstr "" @@ -5126,102 +5364,92 @@ msgstr "" #: part/templates/part/partial_delete.html:22 #, python-format -msgid "" -"This part is used in BOMs for %(count)s other parts. If you delete this " -"part, the BOMs for the following parts will be updated" +msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated" msgstr "" #: part/templates/part/partial_delete.html:32 #, python-format -msgid "" -"There are %(count)s stock entries defined for this part. If you delete this " -"part, the following stock entries will also be deleted:" +msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:43 #, python-format -msgid "" -"There are %(count)s manufacturers defined for this part. If you delete this " -"part, the following manufacturer parts will also be deleted:" +msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:54 #, python-format -msgid "" -"There are %(count)s suppliers defined for this part. If you delete this " -"part, the following supplier parts will also be deleted:" +msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:65 #, python-format -msgid "" -"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this " -"part will permanently remove this tracking information." +msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5229,7 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5263,8 +5492,7 @@ 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 " +msgid "The BOM file must contain the required named columns as provided in the " msgstr "" #: part/templates/part/upload_bom.html:39 @@ -5284,118 +5512,109 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 -msgid "" -"Your enviroment has an outdated git version. This prevents InvenTree from " -"loading plugin details." +msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" #: plugin/events.py:225 msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5480,9 +5699,7 @@ msgid "Confirm plugin installation" msgstr "" #: plugin/serializers.py:60 -msgid "" -"This will install this plugin now into the current instance. The instance " -"will go into maintenance." +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" #: plugin/serializers.py:75 @@ -5554,31 +5771,31 @@ msgstr "" msgid "Purchase order query filters" msgstr "" -#: report/models.py:494 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5591,7 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5600,18 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2146 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2152 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5629,23 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:517 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:524 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:549 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5658,9 +5884,7 @@ msgid "Enter unique serial numbers (or leave blank)" msgstr "" #: stock/forms.py:133 -msgid "" -"Destination for serialized stock (by default, will remain in current " -"location)" +msgid "Destination for serialized stock (by default, will remain in current location)" msgstr "" #: stock/forms.py:135 @@ -5687,233 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 -msgid "" -"Expiry date for stock item. Stock will be considered expired after this date" +#: stock/models.py:718 +msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:137 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:745 +#: stock/models.py:782 msgid "Converted to part" msgstr "" -#: stock/models.py:1265 +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1271 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1280 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1283 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1290 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1361 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1367 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1370 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1373 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1376 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1383 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1387 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1391 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2066 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2123 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2129 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2147 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2153 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2159 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2166 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2172 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -5921,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6063,15 +6282,17 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:316 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6175,6 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6184,10 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6220,12 +6444,11 @@ msgid "This stock item is allocated to Build Order" msgstr "" #: stock/templates/stock/item_base.html:260 -msgid "" -"This stock item is serialized - it has a unique serial number and the " -"quantity cannot be adjusted." +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:301 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6246,9 +6469,7 @@ msgid "Tests" msgstr "" #: stock/templates/stock/item_base.html:411 -msgid "" -"You are not in the list of owners of this item. This stock item cannot be " -"edited." +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:412 @@ -6266,9 +6487,7 @@ msgstr "" #: stock/templates/stock/item_delete.html:12 #, python-format -msgid "" -"This will remove %(qty)s units of %(full_name)s from stock." +msgid "This will remove %(qty)s units of %(full_name)s from stock." msgstr "" #: stock/templates/stock/item_serialize.html:5 @@ -6317,9 +6536,7 @@ msgid "Location Owner" msgstr "" #: stock/templates/stock/location.html:117 -msgid "" -"You are not in the list of owners of this location. This stock location " -"cannot be edited." +msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" #: stock/templates/stock/location.html:133 @@ -6329,7 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/stats.html:109 users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6344,15 +6561,11 @@ msgstr "" #: stock/templates/stock/location_delete.html:15 #, python-format -msgid "" -"If this location is deleted, these child locations will be moved to " -"%(location)s" +msgid "If this location is deleted, these child locations will be moved to %(location)s" msgstr "" #: stock/templates/stock/location_delete.html:17 -msgid "" -"If this location is deleted, these child locations will be moved to the top " -"level stock location" +msgid "If this location is deleted, these child locations will be moved to the top level stock location" msgstr "" #: stock/templates/stock/location_delete.html:25 @@ -6362,14 +6575,11 @@ msgstr "" #: stock/templates/stock/location_delete.html:27 #, python-format -msgid "" -"If this location is deleted, these stock items will be moved to %(location)s" +msgid "If this location is deleted, these stock items will be moved to %(location)s" msgstr "" #: stock/templates/stock/location_delete.html:29 -msgid "" -"If this location is deleted, these stock items will be moved to the top " -"level stock location" +msgid "If this location is deleted, these stock items will be moved to the top level stock location" msgstr "" #: stock/templates/stock/stock_app_base.html:16 @@ -6413,7 +6623,7 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" @@ -6457,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6465,7 +6675,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" @@ -6477,7 +6687,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:915 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" @@ -6505,39 +6715,40 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6569,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6640,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:127 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6719,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6729,9 +6944,7 @@ msgstr "" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format -msgid "" -"The Base-URL for this plugin is %(base)s." +msgid "The Base-URL for this plugin is %(base)s." msgstr "" #: templates/InvenTree/settings/mixins/urls.html:23 @@ -6759,9 +6972,7 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "" -"Changing the settings below require you to immediatly restart InvenTree. Do " -"not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" #: templates/InvenTree/settings/plugin.html:34 @@ -6769,10 +6980,11 @@ msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:39 +#: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" @@ -6787,15 +6999,19 @@ msgstr "" msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:93 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:116 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6817,10 +7033,7 @@ msgid "License" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:71 -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." +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:77 @@ -6836,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -6979,7 +7192,8 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 templates/notes_buttons.html:3 +#: templates/InvenTree/settings/user.html:23 +#: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" msgstr "" @@ -7031,9 +7245,7 @@ msgid "Warning:" msgstr "" #: templates/InvenTree/settings/user.html:96 -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." +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:104 @@ -7049,14 +7261,11 @@ msgid "Social Accounts" msgstr "" #: templates/InvenTree/settings/user.html:122 -msgid "" -"You can sign in to your account using any of the following third party " -"accounts:" +msgid "You can sign in to your account using any of the following third party accounts:" msgstr "" #: templates/InvenTree/settings/user.html:157 -msgid "" -"You currently have no social network accounts connected to this account." +msgid "You currently have no social network accounts connected to this account." msgstr "" #: templates/InvenTree/settings/user.html:162 @@ -7196,10 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "" -"Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are " -"welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7218,8 +7424,12 @@ msgstr "" msgid "InvenTree Version Information" msgstr "" -#: templates/about.html:11 templates/about.html:105 templates/modals.html:15 -#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +#: templates/about.html:11 templates/about.html:105 +#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620 +#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584 +#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986 +#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39 +#: templates/modals.html:50 msgid "Close" msgstr "" @@ -7286,52 +7496,37 @@ msgstr "" #: templates/account/email_confirm.html:16 #, python-format -msgid "" -"Please confirm that %(email)s is an email " -"address for user %(user_display)s." +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" #: templates/account/email_confirm.html:27 #, python-format -msgid "" -"This email confirmation link expired or is invalid. Please issue a new email confirmation request." +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:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "" #: templates/account/login.html:21 #, python-format -msgid "" -"Please sign in with one\n" -"of your existing third party accounts or sign up\n" +msgid "Please sign in with one\n" +"of your existing third party accounts or sign up\n" "for a account and sign in below:" msgstr "" #: templates/account/login.html:25 #, python-format -msgid "" -"If you have not created an account yet, then please\n" +msgid "If you have not created an account yet, then please\n" "sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7354,9 +7549,7 @@ 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." +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 @@ -7373,10 +7566,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." +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 @@ -7393,8 +7583,7 @@ msgstr "" #: templates/account/signup.html:13 #, python-format -msgid "" -"Already have an account? Then please sign in." +msgid "Already have an account? Then please sign in." msgstr "" #: templates/account/signup.html:27 @@ -7418,9 +7607,7 @@ 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." +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 @@ -7457,9 +7644,7 @@ 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)." +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" #: templates/allauth_2fa/setup.html:23 @@ -7474,11 +7659,11 @@ msgstr "" msgid "Verify" msgstr "" -#: templates/attachment_button.html:4 +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54 msgid "Add Link" msgstr "" -#: templates/attachment_button.html:7 +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:36 msgid "Add Attachment" msgstr "" @@ -7512,23 +7697,22 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 +#: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:31 -msgid "" -"You are receiving this email because you are subscribed to notifications for " -"this part " -msgstr "" - -#: templates/email/email.html:35 -msgid "InvenTree version" +msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" #: templates/email/low_stock_notification.html:9 @@ -7555,63 +7739,2277 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/modals.html:19 templates/modals.html:43 +#: templates/js/translated/api.js:190 templates/js/translated/modals.js:1056 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1057 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:197 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:198 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1066 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1067 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1071 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1072 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1076 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1077 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:217 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:218 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:222 templates/js/translated/modals.js:1081 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:223 templates/js/translated/modals.js:1082 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:226 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:227 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:78 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:100 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:110 +msgid "Confirm Delete" +msgstr "" + +#: templates/js/translated/attachment.js:111 +msgid "Delete Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:167 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:183 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:190 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:30 +msgid "Scan barcode data here using wedge scanner" +msgstr "" + +#: templates/js/translated/barcode.js:32 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:39 +msgid "Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:96 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:97 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:135 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:156 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:183 +#: templates/js/translated/modals.js:1046 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:287 +msgid "Scan barcode data below" +msgstr "" + +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:345 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:363 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: templates/js/translated/barcode.js:386 +msgid "This will remove the association between this stock item and the barcode" +msgstr "" + +#: templates/js/translated/barcode.js:392 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:499 +msgid "Check Stock Items into Location" +msgstr "" + +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:534 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:569 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:573 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:580 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:587 +msgid "Barcode does not match Stock Item" +msgstr "" + +#: templates/js/translated/barcode.js:630 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:693 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:75 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:131 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:249 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 +msgid "Format" +msgstr "" + +#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 +#: templates/js/translated/order.js:456 +msgid "Select file format" +msgstr "" + +#: templates/js/translated/bom.js:294 +msgid "Cascading" +msgstr "" + +#: templates/js/translated/bom.js:295 +msgid "Download cascading / multi-level BOM" +msgstr "" + +#: templates/js/translated/bom.js:300 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:301 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:307 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:308 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:313 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:314 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:319 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:320 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:325 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:326 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:509 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:565 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:576 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:582 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:621 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:622 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:867 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:882 +msgid "Purchase Price Range" +msgstr "" + +#: templates/js/translated/bom.js:889 +msgid "Purchase Price Average" +msgstr "" + +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1000 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1002 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1004 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "Are you sure you want to delete this BOM item?" +msgstr "" + +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1375 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:86 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:120 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:141 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:146 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:174 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 +#: templates/js/translated/stock.js:180 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 +#: templates/js/translated/stock.js:182 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:226 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:227 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:235 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:243 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:274 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:285 +msgid "Unallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:294 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:302 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:325 +msgid "Are you sure you wish to unallocate stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:343 +msgid "Unallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:583 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:672 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:710 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1093 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1697 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:1707 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:1732 +msgid "Substitute parts available" +msgstr "" + +#: templates/js/translated/build.js:1749 +msgid "Quantity Per" +msgstr "" + +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 +msgid "Allocated" +msgstr "" + +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:2024 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:2025 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:2067 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:2247 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:2248 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:2250 +msgid "If a location is specifed, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:2251 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:2252 +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:2273 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2313 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2350 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2426 +msgid "No information" +msgstr "" + +#: templates/js/translated/build.js:2483 +msgid "No parts allocated for" +msgstr "" + +#: templates/js/translated/company.js:65 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:78 templates/js/translated/company.js:177 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:99 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:108 +msgid "Delete Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:193 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:208 +msgid "Edit Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:218 +msgid "Delete Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:286 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:363 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:372 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:387 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:406 +msgid "The following manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:423 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:480 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:500 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:504 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:737 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/filters.js:178 +#: templates/js/translated/filters.js:441 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:182 +#: templates/js/translated/filters.js:442 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:204 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:288 +msgid "Download data" +msgstr "" + +#: templates/js/translated/filters.js:291 +msgid "Reload data" +msgstr "" + +#: templates/js/translated/filters.js:295 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:298 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:350 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366 +#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:353 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:368 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:382 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:396 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:627 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:702 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1194 templates/modals.html:19 +#: templates/modals.html:43 msgid "Form errors exist" msgstr "" +#: templates/js/translated/forms.js:1623 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:1833 templates/search.html:29 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2082 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2559 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:20 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:22 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:307 +msgid "Notes updated" +msgstr "" + +#: templates/js/translated/label.js:39 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/label.js:60 templates/js/translated/report.js:118 +#: templates/js/translated/stock.js:1022 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/label.js:61 +msgid "Stock item(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:79 templates/js/translated/label.js:133 +#: templates/js/translated/label.js:191 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:80 +msgid "No labels found which match selected stock item(s)" +msgstr "" + +#: templates/js/translated/label.js:115 +msgid "Select Stock Locations" +msgstr "" + +#: templates/js/translated/label.js:116 +msgid "Stock location(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:134 +msgid "No labels found which match selected stock location(s)" +msgstr "" + +#: templates/js/translated/label.js:173 +msgid "Part(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:192 +msgid "No labels found which match the selected part(s)" +msgstr "" + +#: templates/js/translated/label.js:261 +msgid "Select Printer" +msgstr "" + +#: templates/js/translated/label.js:265 +msgid "Export to PDF" +msgstr "" + +#: templates/js/translated/label.js:304 +msgid "stock items selected" +msgstr "" + +#: templates/js/translated/label.js:312 templates/js/translated/label.js:328 +msgid "Select Label Template" +msgstr "" + +#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 +#: templates/js/translated/modals.js:610 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 +#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/navbar.html:42 -msgid "Buy" +#: templates/js/translated/modals.js:118 +msgid "Form Title" msgstr "" -#: templates/navbar.html:54 -msgid "Sell" +#: templates/js/translated/modals.js:392 +msgid "Waiting for server..." msgstr "" -#: templates/navbar.html:94 templates/search.html:8 -#: templates/search_form.html:6 templates/search_form.html:7 +#: templates/js/translated/modals.js:551 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:609 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:666 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:937 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:937 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:949 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1046 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1061 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1062 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1085 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/model_renderers.js:60 +msgid "Company ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:121 +msgid "Stock ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:147 +msgid "Location ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:165 +msgid "Build ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 +msgid "Order ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:302 +msgid "Shipment ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:320 +msgid "Category ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:363 +msgid "Manufacturer Part ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:392 +msgid "Supplier Part ID" +msgstr "" + +#: templates/js/translated/notification.js:231 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:235 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:259 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:300 templates/notifications.html:10 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:79 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/order.js:84 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/order.js:124 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/order.js:130 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/order.js:185 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/order.js:210 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/order.js:235 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/order.js:452 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:546 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/order.js:547 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/order.js:585 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/order.js:738 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/order.js:739 +msgid "Ordered" +msgstr "" + +#: templates/js/translated/order.js:741 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/order.js:760 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/order.js:761 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/order.js:1186 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 +msgid "Total" +msgstr "" + +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 +msgid "Unit Price" +msgstr "" + +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 +msgid "Total Price" +msgstr "" + +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/order.js:1686 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/order.js:1773 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/order.js:1776 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/order.js:1781 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/order.js:1801 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/order.js:1818 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/order.js:1852 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/order.js:1862 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/order.js:1886 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/order.js:1892 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/order.js:2260 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/order.js:2341 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2358 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/order.js:2359 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/order.js:2782 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/order.js:2788 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/order.js:2807 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/order.js:2810 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/order.js:2892 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/order.js:2994 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/order.js:3008 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + +#: templates/js/translated/part.js:55 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:59 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:63 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:67 +msgid "Supplier Options" +msgstr "" + +#: templates/js/translated/part.js:81 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:165 +msgid "Create Initial Stock" +msgstr "" + +#: templates/js/translated/part.js:166 +msgid "Create an initial stock item for this part" +msgstr "" + +#: templates/js/translated/part.js:173 +msgid "Initial Stock Quantity" +msgstr "" + +#: templates/js/translated/part.js:174 +msgid "Specify initial stock quantity for this part" +msgstr "" + +#: templates/js/translated/part.js:181 +msgid "Select destination stock location" +msgstr "" + +#: templates/js/translated/part.js:199 +msgid "Copy Category Parameters" +msgstr "" + +#: templates/js/translated/part.js:200 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: templates/js/translated/part.js:208 +msgid "Add Supplier Data" +msgstr "" + +#: templates/js/translated/part.js:209 +msgid "Create initial supplier data for this part" +msgstr "" + +#: templates/js/translated/part.js:265 +msgid "Copy Image" +msgstr "" + +#: templates/js/translated/part.js:266 +msgid "Copy image from original part" +msgstr "" + +#: templates/js/translated/part.js:274 +msgid "Copy bill of materials from original part" +msgstr "" + +#: templates/js/translated/part.js:281 +msgid "Copy Parameters" +msgstr "" + +#: templates/js/translated/part.js:282 +msgid "Copy parameter data from original part" +msgstr "" + +#: templates/js/translated/part.js:295 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:340 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:342 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:423 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:425 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:432 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:449 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:459 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:462 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:487 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:573 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:577 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:705 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1095 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1119 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:1223 +msgid "Not available" +msgstr "" + +#: templates/js/translated/part.js:1374 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:1520 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:1759 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 +msgid "Path" +msgstr "" + +#: templates/js/translated/part.js:1817 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:1875 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:1897 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:1911 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:1936 +#, python-brace-format +msgid "No ${human_name} information found" +msgstr "" + +#: templates/js/translated/part.js:1993 +#, python-brace-format +msgid "Edit ${human_name}" +msgstr "" + +#: templates/js/translated/part.js:1994 +#, python-brace-format +msgid "Delete ${human_name}" +msgstr "" + +#: templates/js/translated/part.js:2108 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2141 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:2167 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2237 +msgid "Single Price" +msgstr "" + +#: templates/js/translated/part.js:2256 +msgid "Single Price Difference" +msgstr "" + +#: templates/js/translated/plugin.js:22 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/report.js:67 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:75 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:90 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:119 +msgid "Stock item(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:136 templates/js/translated/report.js:189 +#: templates/js/translated/report.js:243 templates/js/translated/report.js:297 +#: templates/js/translated/report.js:351 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:137 +msgid "No report templates found which match selected stock item(s)" +msgstr "" + +#: templates/js/translated/report.js:172 +msgid "Select Builds" +msgstr "" + +#: templates/js/translated/report.js:173 +msgid "Build(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:190 +msgid "No report templates found which match selected build(s)" +msgstr "" + +#: templates/js/translated/report.js:226 +msgid "Part(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:244 +msgid "No report templates found which match selected part(s)" +msgstr "" + +#: templates/js/translated/report.js:279 +msgid "Select Purchase Orders" +msgstr "" + +#: templates/js/translated/report.js:280 +msgid "Purchase Order(s) must be selected before printing report" +msgstr "" + +#: templates/js/translated/report.js:298 templates/js/translated/report.js:352 +msgid "No report templates found which match selected orders" +msgstr "" + +#: templates/js/translated/report.js:333 +msgid "Select Sales Orders" +msgstr "" + +#: templates/js/translated/report.js:334 +msgid "Sales Order(s) must be selected before printing report" +msgstr "" + +#: templates/js/translated/search.js:286 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:289 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:72 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:100 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:109 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:153 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:193 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:232 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:238 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:303 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:393 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:406 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:431 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:452 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:472 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:481 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:604 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:605 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:682 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:683 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:685 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:686 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:772 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:773 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:868 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:869 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:875 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:876 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:880 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:881 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:885 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:886 users/models.py:216 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:890 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:983 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:983 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1023 +msgid "You must select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1181 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1183 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1188 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1235 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1238 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1264 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1320 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1485 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1507 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1536 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1540 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1548 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1554 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1712 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:1717 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:1720 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:1724 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:1726 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:1732 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:1734 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:1741 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:1750 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:1752 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:1756 +#: templates/js/translated/table_filters.js:188 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:1807 +msgid "Stocktake" +msgstr "" + +#: templates/js/translated/stock.js:1889 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:1927 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2099 +msgid "Set Stock Status" +msgstr "" + +#: templates/js/translated/stock.js:2113 +msgid "Select Status Code" +msgstr "" + +#: templates/js/translated/stock.js:2114 +msgid "Status code must be selected" +msgstr "" + +#: templates/js/translated/stock.js:2369 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2426 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2445 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2463 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2486 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2494 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:2570 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:2621 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2657 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:2658 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:2660 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2661 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/table_filters.js:56 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:60 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:64 +msgid "Validated" +msgstr "" + +#: templates/js/translated/table_filters.js:72 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:110 +#: templates/js/translated/table_filters.js:183 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:111 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:121 +#: templates/js/translated/table_filters.js:122 +#: templates/js/translated/table_filters.js:429 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:126 +#: templates/js/translated/table_filters.js:468 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:218 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:225 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:140 +#: templates/js/translated/table_filters.js:226 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:229 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:144 +#: templates/js/translated/table_filters.js:230 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:148 +#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:222 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:243 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:163 +#: templates/js/translated/table_filters.js:401 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:164 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:169 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:173 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:174 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:179 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:184 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:189 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:198 +msgid "In Production" +msgstr "" + +#: templates/js/translated/table_filters.js:199 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:203 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:204 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:208 +msgid "Installed" +msgstr "" + +#: templates/js/translated/table_filters.js:209 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:214 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:235 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:253 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:262 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:268 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:430 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:434 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:435 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:440 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:448 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:480 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/tables.js:50 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:54 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:433 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:436 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:441 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:447 templates/navbar.html:102 +#: templates/search.html:8 templates/search_form.html:6 +#: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/navbar.html:101 -msgid "Scan Barcode" +#: templates/js/translated/tables.js:450 +msgid "No matching results" msgstr "" -#: templates/navbar.html:108 +#: templates/js/translated/tables.js:453 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:456 +msgid "Refresh" +msgstr "" + +#: templates/js/translated/tables.js:459 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:462 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:465 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" -#: templates/notifications.html:10 -msgid "Notifications will load here" -msgstr "" - #: templates/notifications.html:13 msgid "Show all notifications and history" msgstr "" @@ -7644,10 +10042,6 @@ msgstr "" msgid "Close search menu" msgstr "" -#: templates/search.html:29 -msgid "Searching" -msgstr "" - #: templates/search.html:35 msgid "No search results" msgstr "" @@ -7756,10 +10150,6 @@ msgstr "" msgid "Order selected items" msgstr "" -#: templates/stock_table.html:50 -msgid "Order stock" -msgstr "" - #: templates/stock_table.html:52 msgid "Change status" msgstr "" @@ -7808,38 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 -msgid "Add" -msgstr "" - -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" + diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.mo b/InvenTree/locale/fr/LC_MESSAGES/django.mo deleted file mode 100644 index a3751f6c99..0000000000 Binary files a/InvenTree/locale/fr/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 42ef96ebdc..b86e2df4d9 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Confirmation de l'adresse email" msgid "You must type the same email each time." msgstr "Vous devez taper le même e-mail à chaque fois." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Dupliquer le numéro : {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Quantité fournie invalide" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Chaîne de numéro de série vide" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Groupe invalide : {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Invalide/aucun groupe {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Aucun numéro de série trouvé" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})" @@ -122,7 +130,7 @@ msgstr "Fichier manquant" msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Pièce jointe" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "Lien" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Lien vers une url externe" @@ -152,12 +160,12 @@ msgstr "Commentaire" msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Utilisateur" @@ -194,44 +202,44 @@ msgstr "Erreur lors du renommage du fichier" msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Nom" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" -msgstr "Description" +msgstr "" #: InvenTree/models.py:350 msgid "Description (optional)" @@ -239,9 +247,9 @@ msgstr "Description (facultative)" #: InvenTree/models.py:358 msgid "parent" -msgstr "parent" +msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Doit être un nombre valide" @@ -295,89 +303,101 @@ msgstr "Colonne requise manquante : {name}" msgid "Duplicate column: '{col}'" msgstr "Colonne duliquée : '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Allemand" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" -msgstr "Greek" +msgstr "" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Anglais" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" -msgstr "Spanish" +msgstr "" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Espagnol (Mexique)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Français" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" -msgstr "Hebrew" +msgstr "" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Hongrois" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" -msgstr "Italian" +msgstr "" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" -msgstr "Japanese" +msgstr "" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" -msgstr "Korean" +msgstr "" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" -msgstr "Dutch" +msgstr "" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" -msgstr "Norwegian" +msgstr "" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polonais" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugais" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" -msgstr "Russian" +msgstr "" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" -msgstr "Swedish" +msgstr "" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" -msgstr "Thai" +msgstr "" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Turc" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" -msgstr "Vietnamese" +msgstr "" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" -msgstr "Chinese" +msgstr "" #: InvenTree/status.py:110 msgid "Background worker check failed" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "Échec des contrôles de santé du système" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "En attente" @@ -400,14 +420,14 @@ msgstr "En attente" msgid "Placed" msgstr "Placé" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Terminé" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Annulé" @@ -421,14 +441,14 @@ msgstr "Perdu" msgid "Returned" msgstr "Retourné" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Expédié" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Détruit" msgid "Rejected" msgstr "Rejeté" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Ancienne entrée de suivi de stock" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Article en stock créé" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Article de stock modifié" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Numéro de série attribué" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Stock comptabilisé" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Stock ajouté manuellement" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Stock supprimé manuellement" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Emplacement modifié" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Installé dans l'assemblage" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Retiré de l'assemblage" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Composant installé" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Composant retiré" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Séparer de l'élément parent" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Fractionner l'élément enfant" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Articles de stock fusionnés" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Envoyé au client" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Retourné par le client" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "La sortie de l'ordre de construction a été créée" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Sortie de l'ordre de construction terminée" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "Consommé par ordre de construction" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Reçu contre bon de commande" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Fabrication" @@ -568,29 +592,29 @@ msgstr "Le surplus ne doit pas dépasser 100%" #: InvenTree/validators.py:162 msgid "Invalid value for overage" -msgstr "" +msgstr "Valeur invalide pour le dépassement" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Supprimer cet élément" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Cochez la case pour confirmer la suppression de l'élément" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Modifier les informations utilisateur" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Définir le mot de passe" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Les mots de passe doivent correspondre" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Informations système" @@ -649,15 +673,15 @@ msgstr "Choix invalide pour la fabrication parente" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Ordre de Fabrication" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Ordres de Fabrication" msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Référence" @@ -692,33 +717,34 @@ msgstr "BuildOrder associé a cette fabrication" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Pièce" @@ -734,8 +760,8 @@ msgstr "Bon de commande de référence" msgid "SalesOrder to which this build is allocated" msgstr "Commande de vente à laquelle cette construction est allouée" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Emplacement d'origine" @@ -775,21 +801,21 @@ msgstr "État de la construction" msgid "Build status code" msgstr "Code de statut de construction" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Code de lot" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Code de lot pour ce build output" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Date de création" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Date d'achèvement cible" @@ -797,8 +823,8 @@ msgstr "Date d'achèvement cible" 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:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Date d'achèvement" @@ -806,7 +832,7 @@ msgstr "Date d'achèvement" msgid "completed by" msgstr "achevé par" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Émis par" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Utilisateur ayant émis cette commande de construction" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Responsable" @@ -828,31 +854,32 @@ msgid "User responsible for this build order" msgstr "Utilisateur responsable de cette commande de construction" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Lien Externe" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" -msgstr "Notes" +msgstr "" #: build/models.py:337 msgid "Extra build notes" @@ -870,73 +897,73 @@ msgstr "L'ordre de production a déjà été réalisé" msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:1168 +#: build/models.py:1171 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:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "L'article de stock est suralloué" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "La quantité allouée doit être supérieure à zéro" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "La quantité doit être de 1 pour stock sérialisé" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Assemblage" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Construction à laquelle allouer des pièces" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Article en stock" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Stock d'origine de l'article" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Stock d'origine de l'article" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Quantité" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Stock de destination de l'article" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "Sortie d'assemblage" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "Cet ordre de production a déjà été produit" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "Cet ordre de production n'est pas complètement attribué" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Entrer la quantité désiré pour la fabrication" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" -msgstr "" +msgstr "Quantité entière requise pour les pièces à suivre" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "" +msgstr "Quantité entière requise, car la facture de matériaux contient des pièces à puce" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Numéros de série" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Entrer les numéros de séries pour la fabrication" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Allouer automatiquement les numéros de série" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" -msgstr "" +msgstr "Le numéro de série suivant existe déjà" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Emplacement" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "Emplacement des ordres de production achevés" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "État" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "Accepter les non-alloués" -#: build/serializers.py:435 +#: build/serializers.py:448 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:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "Le stock requis n'a pas encore été totalement alloué" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "Accepter les incomplèts" -#: build/serializers.py:451 +#: build/serializers.py:464 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:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "La quantité nécessaire n'a pas encore été complétée" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "L'ordre de production a des sorties incomplètes" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ 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:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Date Cible" @@ -1251,28 +1291,28 @@ msgstr "Cette construction était due le %(target)s" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "En retard" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Terminé" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Commandes" @@ -1311,31 +1351,34 @@ 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:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" -msgstr "Destination" +msgstr "" #: build/templates/build/detail.html:56 msgid "Destination location not specified" msgstr "Stockage de destination non défini" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "Pièces allouées" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Créé le" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Désallouer le stock" @@ -1448,33 +1491,41 @@ msgstr "Actions d'impression" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Pieces jointes" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "Allocation terminée" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Nouvel ordre de construction" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:680 +#: common/models.py:698 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:687 -msgid "InvenTree Instance Name" -msgstr "Nom de l'instance InvenTree" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "URL de base" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Devises par défaut" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:721 +#: common/models.py:746 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:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Activer le support du scanner de code-barres" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:735 +#: common/models.py:760 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:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:747 +#: common/models.py:772 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:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:761 +#: common/models.py:786 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:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:768 +#: common/models.py:793 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:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:775 +#: common/models.py:800 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:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" -msgstr "Template" +msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "Les composantes peuvent être assemblées à partir d'autres composants par défaut" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Composant" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "Les composantes peuvent être utilisées comme sous-composants par défaut" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Vendable" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Traçable" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Afficher le prix dans les formulaires" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "Afficher le prix de la pièce dans certains formulaires" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Afficher le prix dans la BOM" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "Inclure les informations de prix dans les tableaux de la BOM" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "Historique des prix" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "Créer un stock initial" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "Créer le stock initial lors de la création d'une pièce" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Rapports de test" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "jours" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "Valeur préfixe référence commande client" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "Préfixe des commandes d'achats" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "Valeur préfixe référence bon de commande" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Email requis" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "Format préféré pour l'affichage des dates" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Prix" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Actif" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Composantes importées" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Étape précédente" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2542,7 +2604,7 @@ msgstr "Adresse e-mail de contact" #: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" -msgstr "Contact" +msgstr "" #: company/models.py:129 msgid "Point of contact" @@ -2552,9 +2614,9 @@ msgstr "Point de contact" msgid "Link to external company information" msgstr "Lien externe vers les informations de l'entreprise" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" -msgstr "Image" +msgstr "" #: company/models.py:144 msgid "is customer" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Cette entreprise fabrique-t-elle des pièces?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Devise" @@ -2589,7 +2652,7 @@ msgstr "Devise" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Fabricant" @@ -2613,11 +2676,11 @@ msgstr "Fabricant" msgid "Select manufacturer" msgstr "Sélectionner un fabricant" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Valeur" @@ -2655,10 +2718,10 @@ msgstr "Valeur" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Fournisseur" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "coût de base" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Créer une commande d'achat" @@ -2796,13 +2859,13 @@ msgstr "Ajouter une nouvelle image" msgid "Download image from URL" msgstr "Télécharger l'image depuis l'URL" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Commandes d'achat" @@ -2906,10 +2969,10 @@ msgstr "Nouvelle commande achat" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Ventes" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Nouvelle commande de vente" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "Stock affecté" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "Liste des Fournisseurs" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabricants" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Pièces Internes" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Fournisseurs" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Supprimer les pièces du fournisseur" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Supprimer" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Paramètres" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Nouveau paramètre" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "Commander un composant" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Information sur les prix" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,17 +3189,17 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" -msgstr "Stock" +msgstr "" #: company/templates/company/supplier_part_navbar.html:22 msgid "Orders" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Tarif" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Éléments en stock" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Nouveau Fabricant" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Clients" @@ -3186,20 +3252,20 @@ msgstr "Entreprises" msgid "New Company" msgstr "Nouvelle Entreprise" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Activé" @@ -3247,7 +3313,7 @@ msgstr "Hauteur [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filtres" @@ -3285,374 +3351,392 @@ msgstr "Marquer la commande comme complète" msgid "Cancel order" msgstr "Annuler la commande" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Description de la commande" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "Lien vers une page externe" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Créé par" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "Notes de commande" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "expédié par" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "Nombre d'élement" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "Commande" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Commande d’achat" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "Pièce fournisseur" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "Reçu" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Prix d'achat" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "Prix de vente" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "Ligne" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "Article" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "Entrez les numéros de série à allouer" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 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:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "Les numéros de série suivants sont déjà alloués" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Supprimer la ligne" @@ -3789,19 +3876,11 @@ msgstr "Supprimer la ligne" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "Commande déjà traitée. Les fichiers ne peuvent pas être chargés." @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "Articles de la commande d'achat" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "Notes de commande" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "Expéditions en attente" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "En Commande" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Catégorie de composant" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Catégories de composants" @@ -4138,9 +4232,8 @@ msgstr "Catégories de composants" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Composantes" @@ -4165,466 +4258,470 @@ msgstr "Le prochain numéro de série disponible est" msgid "Most recent serial number is" msgstr "Le numéro de série le plus récent est" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Description du composant" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Catégorie" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" -msgstr "IPN" +msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Révision" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "Ventes multiples" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "Requis" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "Données" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "ID de composant" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "Devise d'achat de l'item" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "Exporter" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "Composant créé avec succès" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Fabricants de composants" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "Supprimer la colonne" #: 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 "Dupliquer la sélection" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "Dernier numéro de série" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "Rechercher un numéro de série" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "Calculer" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "Prix d’achat unitaire" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "Tester le modèle" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "Gammes de prix" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "Afficher le prix de vente" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "Aller à la vue d'ensemble" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "Aucun" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Nom du modèle" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "Filtres de composants" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "Extrait " -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "Elément" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Numéro de série" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "Résultat" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "Sélectionner un propriétaire" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "Il existe déjà un article en stock avec ce numéro de série" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 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:489 +#: stock/models.py:525 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:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 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:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Les numéros de série existent déja : {exists}" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Devise d'achat de l'item" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "Entrez le nombre d'articles en stock à sérialiser" @@ -6096,7 +6169,7 @@ msgstr "" 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:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Les numéros de série existent déjà" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Cet article de stock est sérialisé - il a un numéro de série unique et la quantité ne peut pas être ajustée." #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "Propriétaire requis (contrôle de propriété actif)" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Autorisation refusée" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6949,7 +7030,7 @@ msgstr "aucune information de version fournie" #: templates/InvenTree/settings/plugin_settings.html:62 msgid "License" -msgstr "License" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:71 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." @@ -6968,8 +7049,8 @@ msgid "This plugin was installed as a package" msgstr "Ce plugin a été installé en tant que paquet" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Ce plugin a été trouvé dans un chemin local d'InvenTree" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "Quantité requise" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponible" @@ -7642,10 +7715,6 @@ msgstr "Disponible" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "Modifier la pièce jointe" msgid "Delete attachment" msgstr "Supprimer la pièce jointe" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "Scannez les données du code-barres ici en utilisant un wedge scanner" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "Saisir les données du code-barres" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "Code-barres" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "Saisir les notes optionnelles pour le transfert de stock" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "Saisir des notes" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "Erreur serveur" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "Réponse inconnue du serveur" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "Réponse du serveur invalide" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "Scanner les données du code-barres ci-dessous" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "Scanner le code-barres" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "Aucune URL dans la réponse" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "Lier le code-barres à l'article de stock" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "Ceci supprimera l'association entre cet article de stock et le code-barres" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "Délier" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "Supprimer l'article de stock" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "Vérifier les articles de stock dans l'emplacement" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "Article de stock déjà scanné" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "Article de stock déjà à cet emplacement" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "Article de stock ajouté" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "Le code-barres ne correspond pas à l'article de stock" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "Vérifier dans l'emplacement" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "Le code-barres ne correspond pas à un emplacement valide" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "Télécharger le template de la BOM" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "Sélectionner un format de fichier" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "Prochain numéro de série disponible" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "Dernier numéro de série" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "Commander des stocks" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "Pas d'informations sur l'utilisateur" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "ID de commande" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "Référence de commande" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "Commandé" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "Commande en retard" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "Livré au client" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "Allouer des numéros de série" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "Acheter du stock" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "Calculer le prix" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "Allouer des numéros de série" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Attributs de la pièce" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "Modifier la pièce" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "Pièce modifiée" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "Créer une variante de pièce" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "Stock bas" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "Pièce traçable" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "Pièce virtuelle" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "Pièce vendable" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Aucune variante trouvée" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Aucune pièce trouvée" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Aucune catégorie" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Afficher sous forme de liste" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Afficher sous forme de grille" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Afficher sous forme d'arborescence" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Chemin d'accès" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "Modifier le résultat du test" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "Supprimer le résultat du test" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "Trouver un numéro de série" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "Entrer le numéro de série" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "Entrer un numéro de série" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "Aucun numéro de série correspondant" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "Plus d'un résultat correspondant trouvé" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "Confirmer l'assignation de stock" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "Assigner le stock au client" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "Attention : l'opération de fusion est irréversible" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "Certaines informations seront perdues lors de la fusion des articles en stock" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "Confirmer la fusion de l'article en stock" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "Fusionner les articles en stock" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "Transférer le stock" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "Transférer" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "Compter le stock" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "Compter" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "Supprimer du stock" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "Supprimer" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "Ajouter du stock" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "Ajouter" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "Supprimer le stock" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "Spécifiez la quantité du stock" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "Vous devez sélectionner au moins un article en stock disponible" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "RÉUSSI" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "ÉCHEC" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "AUCUN RÉSULTAT" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "Ajouter un résultat de test" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "Aucun résultat de test trouvé" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "Date du test" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "En production" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "Article en stock installé dans un autre article en stock" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "Assigné à une commande de vente" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Aucun emplacement de stock défini" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "L'article de stock est en production" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "L'article en stock a été assigné à une commande de vente" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "L'article en stock a été assigné à un client" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "L'article en stock a expiré" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "L'article en stock va bientôt expirer" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "L'article de stock sérialisé a été alloué" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "L'article de stock a été complètement alloué" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "L'article de stock a été partiellement alloué" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "L'article en stock a été installé dans un autre article" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "L'article de stock a été rejeté" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "L'article de stock est perdu" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "L'article de stock est détruit" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Epuisé" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "Prise d'inventaire" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "Pièce de fournisseur non précisée" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "Aucun article de stock ne correspond à la requête" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "Définir l'état du stock" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "Sélectionner le code de statut" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "Le code de statut doit être sélectionné" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "Détails" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "L'emplacement n'existe plus" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "La commande d'achat n'existe plus" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "Le client n'existe plus" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "L'article de stock n'existe plus" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "Ajouté" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "Supprimé" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "Inclure les emplacements" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "Inclure les sous-catégories" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "Numéro de série" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Code de lot" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "Pièces actives" @@ -9691,68 +9827,88 @@ msgstr "Afficher les articles qui ont été assignés à un client" msgid "Stock status" msgstr "État du stock" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "A un prix d'achat" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "Afficher les articles de stock qui ont un prix d'achat défini" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "Afficher les articles de stock qui ont expiré" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "Afficher le stock qui est proche de l'expiration" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "État de la construction" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "Assigné à moi" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "État de la commande" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "En suspens" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "Inclure les pièces des sous-catégories" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "A un IPN" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "La pièce a un numéro de pièce interne" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "Afficher les pièces actives" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "Achetable" @@ -9792,7 +9948,7 @@ msgstr "de" msgid "rows" msgstr "lignes" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "Colonnes" msgid "All" msgstr "Tout" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Acheter" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Ventes" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Se déconnecter" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Se connecter" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "À propos d'InvenTree" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "Mode démo de InvenTree" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "Droits" msgid "Important dates" msgstr "Dates importantes" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Droit défini" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Groupe" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Vue" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Droit de voir des éléments" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Droit d'ajouter des éléments" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Modifier" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Droit de modifier des élément" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Droit de supprimer des éléments" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.mo b/InvenTree/locale/he/LC_MESSAGES/django.mo deleted file mode 100644 index 3427265ca5..0000000000 Binary files a/InvenTree/locale/he/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index ee93a1f8a8..5813c5838e 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "אישור כתובת אימייל" msgid "You must type the same email each time." msgstr "חובה לרשום את אותו אימייל בכל פעם." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "קבוצה שגויה: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "קבוצה שגויה / לא נמצאה {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "מספרים סידוריים לא נמצאו" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "כמות המספרים הסידוריים ({s}) מוכרים להיות תואמים לכמות ({q})" @@ -122,7 +130,7 @@ msgstr "קובץ חסר" msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "קובץ מצורף" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "בחר קובץ לצירוף" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "קישור" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "קישור חיצוני" @@ -152,12 +160,12 @@ msgstr "הערה" msgid "File comment" msgstr "הערת קובץ" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "משתמש" @@ -194,42 +202,42 @@ msgstr "שגיאה בשינוי שם פריט" msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "שם" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "תיאור" @@ -241,7 +249,7 @@ msgstr "תיאור (לא חובה)" msgid "parent" msgstr "מקור" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "גרמנית" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "יוונית" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "אנגלית" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "ספרדית" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "ספרדית (מקסיקנית)" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "צרפתית" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "עברית" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 +msgid "German" +msgstr "גרמנית" + +#: InvenTree/settings.py:674 +msgid "Greek" +msgstr "יוונית" + +#: InvenTree/settings.py:675 +msgid "English" +msgstr "אנגלית" + +#: InvenTree/settings.py:676 +msgid "Spanish" +msgstr "ספרדית" + +#: InvenTree/settings.py:677 +msgid "Spanish (Mexican)" +msgstr "ספרדית (מקסיקנית)" + +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 +msgid "French" +msgstr "צרפתית" + +#: InvenTree/settings.py:680 +msgid "Hebrew" +msgstr "עברית" + +#: InvenTree/settings.py:681 +msgid "Hungarian" +msgstr "" + +#: InvenTree/settings.py:682 msgid "Italian" msgstr "איטלקית" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "יפנית" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "קוריאנית" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "הולנדית" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "נורווגית" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "פולנית" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "פורטוגזית" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "רוסית" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "שוודית" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "תאילנדית" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "טורקית" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "ווייטנאמית" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "סינית" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "בהמתנה" @@ -400,14 +420,14 @@ msgstr "בהמתנה" msgid "Placed" msgstr "מוקם" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "הושלם" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "מבוטל" @@ -421,8 +441,8 @@ msgstr "אבד" msgid "Returned" msgstr "הוחזר" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "נשלח" @@ -446,91 +466,95 @@ msgstr "הרוס" msgid "Rejected" msgstr "נדחה" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "מיקום שונה" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "נשלח ללקוח" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "הוחזר מלקוח" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "ייצור" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "מחק פריט" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "ערוך מידע אודות המשתמש" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "הגדר סיסמא" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "הסיסמאות מוכרחות להיות תואמות" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "מידע אודות המערכת" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "מקט" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "רכיב" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "כמות" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "מספרים סידוריים" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.mo b/InvenTree/locale/hu/LC_MESSAGES/django.mo deleted file mode 100644 index 71cbdf3e9d..0000000000 Binary files a/InvenTree/locale/hu/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 14078dda2b..4efcf1a6b9 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: hu\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Email cím megerősítés" msgid "You must type the same email each time." msgstr "Mindig ugyanazt az email címet kell beírni." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Duplikált sorozatszám: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Nem megfelelő mennyiség" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Üres sorozatszám" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Érvénytelen csoport: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Érvénytelen vagy nemlétező csoport {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Nem található sorozatszám" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Az egyedi sorozatszámok száma ({s}) meg kell egyezzen a mennyiséggel ({q})" @@ -122,7 +130,7 @@ msgstr "Hiányzó fájl" msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Melléklet" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Válaszd ki a mellekelni kívánt fájlt" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "Link" +msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Link külső URL-re" @@ -152,12 +160,12 @@ msgstr "Megjegyzés" msgid "File comment" msgstr "Leírás, bővebb infó" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Felhasználó" @@ -194,42 +202,42 @@ msgstr "Hiba a fájl átnevezésekor" msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Név" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Leírás" @@ -241,7 +249,7 @@ msgstr "Leírás (opcionális)" msgid "parent" msgstr "szülő" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" @@ -295,87 +303,99 @@ msgstr "Szükséges oszlop hiányzik: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplikált oszlop: '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "Cseh" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Német" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Görög" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Angol" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Spanyol" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Spanyol (Mexikói)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "Fárszi/Perzsa" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Francia" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Héber" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Magyar" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Olasz" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japán" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreai" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Holland" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norvég" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Lengyel" -#: InvenTree/settings.py:679 -msgid "Portugese" +#: InvenTree/settings.py:688 +msgid "Portuguese" msgstr "Portugál" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "Portugál (Brazíliai)" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Orosz" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Svéd" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Tháj" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Török" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnámi" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Kínai" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InvenTree rendszer állapotának ellenőrzése sikertelen" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Függőben" @@ -400,14 +420,14 @@ msgstr "Függőben" msgid "Placed" msgstr "Kiküldve" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Kész" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Megszakítva" @@ -421,8 +441,8 @@ msgstr "Elveszett" msgid "Returned" msgstr "Visszaküldve" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Kiszállítva" @@ -446,91 +466,95 @@ msgstr "Megsemmisült" msgid "Rejected" msgstr "Elutasított" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Örökölt készlet követési bejegyzés" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Készlet tétel létrehozva" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Szerkeszett készlet tétel" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Hozzárendelt sorozatszám" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Készlet megszámolva" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Készlet manuálisan hozzáadva" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Készlet manuálisan elvéve" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Hely megváltozott" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Gyártmányba beépült" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Gyártmányból eltávolítva" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Beépült összetevő tétel" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Eltávolított összetevő tétel" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Szülő tételből szétválasztva" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Szétválasztott gyermek tétel" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Összevont készlet tétel" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "Alkatrészváltozattá alakítva" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Vevőnek elküldve" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Vevőtől visszaérkezett" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Gyártási rendelés kimenete elkészült" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Gyártási rendelés kimenete kész" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "Gyártásra felhasználva" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Megrendelésre érkezett" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Folyamatban" @@ -570,27 +594,27 @@ msgstr "Túlszállítás nem lehet több mint 100%" msgid "Invalid value for overage" msgstr "Érvénytelen érték a túlszállításra" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Tétel törlése" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Jelöld a törlés megerősítéséhez" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Felhasználói információ módosítása" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Jelszó beállítása" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "A jelszavaknak egyeznie kell" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Rendszerinformáció" @@ -649,15 +673,15 @@ msgstr "Hibás választás a szülő gyártásra" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Gyártási utasítás" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Gyártási utasítások" msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Azonosító" @@ -692,33 +717,34 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Alkatrész" @@ -734,8 +760,8 @@ msgstr "Vevői rendelés azonosító" 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:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Forrás hely" @@ -775,21 +801,21 @@ msgstr "Gyártási állapot" msgid "Build status code" msgstr "Gyártás státusz kód" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Batch kód" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Batch kód a gyártás kimenetéhez" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Létrehozás dátuma" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Befejezés cél dátuma" @@ -797,8 +823,8 @@ msgstr "Befejezés cél dátuma" 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:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Elkészítés dátuma" @@ -806,7 +832,7 @@ msgstr "Elkészítés dátuma" msgid "completed by" msgstr "elkészítette" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Kiállította" @@ -815,11 +841,11 @@ 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:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Felelős" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Felhasználó aki felelős ezért a gyártási utasításért" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Külső link" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Megjegyzések" @@ -870,73 +897,73 @@ msgstr "Gyártási kimenet már kész" 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:1168 +#: build/models.py:1171 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:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Lefoglalt mennyiség ({q}) nem lépheti túl a készletet ({a})" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "Készlet túlfoglalva" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" -#: build/models.py:1199 +#: build/models.py:1202 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:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "Kiválasztott készlet tétel nem található az alkatrészjegyzékben" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Gyártás" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Gyártás amihez készletet foglaljunk" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Készlet tétel" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Forrás készlet tétel" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Forrás készlet tétel" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Cél készlet tétel" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "Gyártás kimenet" @@ -990,178 +1018,190 @@ msgstr "Kimeneti alkatrész nem egyezik a gyártási utasításban lévő alkatr msgid "This build output has already been completed" msgstr "Ez a gyártási kimenet már elkészült" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Add meg a mennyiséget a gyártás kimenetéhez" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" -#: build/serializers.py:208 +#: build/serializers.py:213 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:211 +#: build/serializers.py:216 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:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Sorozatszámok" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "Sorozatszámok automatikus hozzárendelése" -#: build/serializers.py:241 +#: build/serializers.py:246 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:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "A következő sorozatszámok már léteznek" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Hely" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "A kész gyártási kimenetek helye" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "Állapot" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "Kiosztatlanok elfogadása" -#: build/serializers.py:435 +#: build/serializers.py:448 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:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "A szükséges készlet nem lett teljesen lefoglalva" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "Befejezetlenek elfogadása" -#: build/serializers.py:451 +#: build/serializers.py:464 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:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "Szükséges gyártási mennyiség nem lett elérve" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 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/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "Alkatrészjegyzék tétel" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "Gyártás kimenet" -#: build/serializers.py:520 +#: build/serializers.py:533 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:567 +#: build/serializers.py:580 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:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Rendelkezésre álló mennyiség ({q}) túllépve" -#: build/serializers.py:644 +#: build/serializers.py:658 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:651 +#: build/serializers.py:665 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:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" -#: build/serializers.py:731 +#: build/serializers.py:749 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:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "Hely kizárása" -#: build/serializers.py:740 +#: build/serializers.py:758 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:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "Felcserélhető készlet" -#: build/serializers.py:746 +#: build/serializers.py:764 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:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "Készlet helyettesítés" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "Helyettesítő alkatrészek foglalásának engedélyezése" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "A készlet nem lett teljesen lefoglalva ehhez a gyártási utasításhoz" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Cél dátum" @@ -1251,28 +1291,28 @@ msgstr "Ez a gyártás %(target)s-n volt esedékes" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" -msgstr "Megkésett" +msgstr "Késésben" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Kész" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Vevői rendelés" @@ -1311,8 +1351,8 @@ msgstr "Készlet forrás" msgid "Stock can be taken from any available location." msgstr "Készlet bármely rendelkezésre álló helyről felhasználható." -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Cél" @@ -1320,22 +1360,25 @@ msgstr "Cél" msgid "Destination location not specified" msgstr "A cél hely nincs megadva" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "Lefoglalt alkatrészek" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" -msgstr "Batch" +msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Létrehozva" @@ -1355,7 +1398,7 @@ msgstr "Alárendelt gyártások" msgid "Allocate Stock to Build" msgstr "Készlet foglalása gyártáshoz" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Készlet felszabadítása" @@ -1392,11 +1435,11 @@ msgstr "Alkatrész rendelés" #: build/templates/build/detail.html:199 msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Nem követett készlet teljesen lefoglalva ehhez a gyártási utasításhoz" +msgstr "Minden szükséges nem követett készlet le lett foglalva ehhez a gyártási utasításhoz" #: build/templates/build/detail.html:203 msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Nem követett készlet nincs teljesen lefoglalva ehhez a gyártási utasításhoz" +msgstr "Nincs minden nem követett készlet lefoglalva ehhez a gyártási utasításhoz" #: build/templates/build/detail.html:210 msgid "Allocate selected items" @@ -1448,33 +1491,41 @@ msgstr "Nyomtatási műveletek" msgid "Print labels" msgstr "Címke nyomtatása" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "Befejezett gyártási kimenetek" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Mellékletek" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "Az összes nem követett készlet lefoglalásra került" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Új gyártási utasítás" @@ -1555,914 +1606,928 @@ msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzéke msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:680 +#: common/models.py:698 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:687 -msgid "InvenTree Instance Name" -msgstr "InvenTree példány neve" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Cég neve" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Letöltés URL-ről" -#: common/models.py:721 +#: common/models.py:746 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:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Vonalkód olvasó engedélyezése" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrész esetén is" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:747 +#: common/models.py:772 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:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:754 +#: common/models.py:779 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:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:761 +#: common/models.py:786 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:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:768 +#: common/models.py:793 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:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:775 +#: common/models.py:800 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:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Sablon" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Gyártmány" -#: common/models.py:789 +#: common/models.py:814 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:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Összetevő" -#: common/models.py:796 +#: common/models.py:821 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:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Követésre kötelezett" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuális" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:831 +#: common/models.py:856 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:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Ár megjelenítése a formokon" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "Alkatrész árak megjelenítése néhány formon" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Ár megjelenítése az alkatrészjegyzékben" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "Árinformációk megjelenítése az alkatrészjegyzék táblákban" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "Ártörténet megjelenítése" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "Alkatrész ártörténet megjelenítése" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "Kezdeti készlet létrehozása" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "Kezdeti készlet megadása az alkatrész létrehozásakor" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "Belső ár alkatrészjegyzék árként" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Belső ár használata (ha van) az alkatrészjegyzék árszámításában" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "Riportok előállítása HTML formátumban (hibakereséshez)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Teszt riportok" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "Batch kód sablon" + +#: common/models.py:962 +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:967 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "Lejárt készlet értékesítésének engedélyezése" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:951 +#: common/models.py:982 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:953 +#: common/models.py:984 msgid "days" msgstr "nap" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "Gyártás engedélyezése lejárt készletből" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "Tuajdonosok kezelésének engedélyezése a készlet helyekre és tételekre" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "Gyártási utasítás azonosító előtagja" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "Előtag értéke a gyártási utasítás azonosítóhoz" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "Gyártási utasítás azonosító reguláris kifejezés" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "Gyártási utasítás azonosítóra illeszkedő reguláris kifejezés" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "Vevői rendelés azonosító előtagja" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "Előtag értéke a vevői rendelés azonosítóhoz" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "Beszerzési rendelés azonosító előtagja" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "Előtag értéke a beszerzési rendelés azonosítóhoz" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:1003 +#: common/models.py:1035 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:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:1021 +#: common/models.py:1056 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:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:1027 +#: common/models.py:1063 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:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:1033 +#: common/models.py:1070 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:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "Pluginok ellenőrzése indításkor" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:1060 +#: common/models.py:1100 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:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:1081 +#: common/models.py:1124 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:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:1088 +#: common/models.py:1132 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:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 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:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:1141 +#: common/models.py:1186 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:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "Legfrissebb alkatrész szám" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "Főoldalon megjelenítendő legújabb alkatrészek" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése" -#: common/models.py:1160 +#: common/models.py:1207 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:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:1166 +#: common/models.py:1214 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:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "Legfrissebb készlet mennyiség" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "Főoldalon megjelenítendő legújabb készlet tételek száma" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "Szükséges készlet megjelenítése" -#: common/models.py:1190 +#: common/models.py:1242 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:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" -msgstr "Megkésett gyártások megjelenítése" +msgstr "Késésben lévő gyártások megjelenítése" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" -msgstr "Megkésett gyártások megjelenítése a főoldalon" +msgstr "Késésben lévő gyártások megjelenítése a főoldalon" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" -msgstr "Megkésett megrendelések megjelenítése" +msgstr "Késésben lévő megrendelések megjelenítése" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" -msgstr "Megkésett megrendelések megjelenítése a főoldalon" +msgstr "Késésben lévő megrendelések megjelenítése a főoldalon" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "Kintlévő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" -msgstr "Megkésett vevői rendelések megjelenítése" +msgstr "Késésben lévő vevői rendelések megjelenítése" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" -msgstr "Megkésett vevői rendelések megjelenítése a főoldalon" +msgstr "Késésben lévő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "Email értesítések engedélyezése" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "Email küldés engedélyezése esemény értesítésekre" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "Címke nyomtatás engedélyezése" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "Címke nyomtatás engedélyezése a web felületről" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:1259 +#: common/models.py:1319 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:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:1266 +#: common/models.py:1326 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:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "Alkatrészek keresése" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "Alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "Kategóriák keresése" -#: common/models.py:1280 +#: common/models.py:1340 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:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "Készlet keresése" -#: common/models.py:1287 +#: common/models.py:1347 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:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "Helyek keresése" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "Készlet helyek megjelenítése a keresési előnézetben" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "Cégek keresése" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "Cégek megjelenítése a keresési előnézetben" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "Beszerzési rendelések keresése" -#: common/models.py:1308 +#: common/models.py:1368 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:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "Vevői rendelések keresése" -#: common/models.py:1315 +#: common/models.py:1375 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:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:1322 +#: common/models.py:1382 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:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "Inaktív alkatrészek elrejtése a kereső előnézeti ablakban" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:1336 +#: common/models.py:1396 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:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:1343 +#: common/models.py:1403 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:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" -msgstr "InvenTree menü pozíciója mindig rögzítve legyen a lap tetején" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "Alkatrész ütemezés" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "Alkatrész ütemezési információk megjelenítése" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "Árlépcső mennyiség" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Ár" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Aktív" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" -msgstr "Token" +msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "Titok" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "Fejléc" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "Törzs" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Fájl feltöltése" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Mezők egyeztetése" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Importált alkatrészek" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Előző lépés" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2534,7 +2596,7 @@ msgstr "Kapcsolattartó telefonszáma" #: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:48 msgid "Email" -msgstr "Email" +msgstr "" #: company/models.py:125 msgid "Contact email address" @@ -2552,7 +2614,7 @@ msgstr "Kapcsolattartó" msgid "Link to external company information" msgstr "Link a külső céginformációhoz" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Kép" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Gyárt ez a cég alkatrészeket?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Pénznem" @@ -2589,7 +2652,7 @@ msgstr "Pénznem" msgid "Default currency used for this company" msgstr "Cég által használt alapértelmezett pénznem" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Kiindulási alkatrész" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Válassz alkatrészt" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Gyártó" @@ -2613,13 +2676,13 @@ msgstr "Gyártó" msgid "Select manufacturer" msgstr "Gyártó kiválasztása" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "Gyártói alkatrész leírása" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Gyártói alkatrész" @@ -2646,8 +2709,8 @@ msgstr "Paraméter neve" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Érték" @@ -2655,10 +2718,10 @@ msgstr "Érték" msgid "Parameter value" msgstr "Paraméter értéke" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "Mértékegységek" @@ -2671,14 +2734,14 @@ 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:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Beszállító" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "Beszállító kiválasztása" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Megjegyzés" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "alap költség" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Csomagolás" @@ -2733,7 +2796,7 @@ msgstr "Csomagolás" msgid "Part packaging" msgstr "Alkatrész csomagolás" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "többszörös" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "Cég" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Beszerzési rendelés létrehozása" @@ -2796,13 +2859,13 @@ msgstr "Új kép feltöltése" msgid "Download image from URL" msgstr "Kép letöltése URL-ről" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Vevő" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Telefonszám" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Kép feltöltése" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Új beszállítói alkatrész létrehozása" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Új beszállítói alkatrész" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Opciók" @@ -2869,7 +2932,7 @@ msgstr "Gyártói alkatrészek" msgid "Create new manufacturer part" msgstr "Új gyártói alkatrész létrehozása" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Új gyártói alkatrész" @@ -2883,10 +2946,10 @@ msgstr "Beszállítói készlet" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Beszerzési rendelések" @@ -2906,10 +2969,10 @@ msgstr "Új beszerzési rendelés" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Vevői rendelések" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Új vevői rendelés" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "Hozzárendelt készlet" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "Cég megjegyzések" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Töröljük a beszállítói alkatrészeket?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz" @@ -2949,83 +3012,83 @@ msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz" msgid "Supplier List" msgstr "Beszállítók listája" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Gyártók" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Alkatrész rendelés" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "Gyártói alkatrész szerkesztése" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "Gyártói alkatrész törlése" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Belső alkatrész" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Beszállítók" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Beszállítói alkatrész törlése" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Törlés" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Paraméterek" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Új paraméter" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "Paraméterek törlése" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "Paraméter hozzáadása" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "A kiválasztott paraméterek törlésre kerülnek" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "Paraméterek törlése" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "Hozzárendelt készlet tételek" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "Beszállítói alkatrész" @@ -3074,7 +3137,7 @@ msgstr "Új készlet tétel létrehozása" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "Új készlet tétel" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "Alkatrész rendelése" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Árinformációk" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "Árlépcső hozzáadása" @@ -3103,11 +3166,13 @@ msgstr "Árlépcső hozzáadása" msgid "No price break information found" msgstr "Nincs árlépcső információ" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "Árlépcső törlése" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "Árlépcső szerkesztése" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "Utoljára módosítva" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Készlet" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "Beszállító alkatrész árazás" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Árazás" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Készlet tételek" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Új gyártó" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Vevők" @@ -3186,20 +3252,20 @@ msgstr "Cégek" msgid "New Company" msgstr "Új cég" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Kép letöltése" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "A kép mérete meghaladja a maximum megengedett letöltés méretét" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "Érvénytelen válasz: {code}" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" @@ -3223,7 +3289,7 @@ msgstr "Címke" msgid "Label template file" msgstr "Címke sablon fájl" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Engedélyezve" @@ -3247,7 +3313,7 @@ msgstr "Magasság [mm]" msgid "Label height, specified in mm" msgstr "Címke magassága, mm-ben" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "Fájlnév minta" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)," #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Szűrők" @@ -3285,374 +3351,392 @@ msgstr "Rendelés teljesítettnek jelölése" msgid "Cancel order" msgstr "Rendelés törlése" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Rendelés leírása" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "Link külső weboldalra" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Készítette" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "Rendelés jegyzetek" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "Rendelés azonosító" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "Beszerzési rendelés állapota" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "Cég akitől a tételek beszerzésre kerülnek" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "Beszállítói azonosító" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "Beszállítói rendelés azonosító kód" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "érkeztette" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "Kiállítás dátuma" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "Kiállítás dátuma" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "Várható beérkezés" -#: order/models.py:250 +#: order/models.py:274 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 számít majd megkésettnek." +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:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "Rendelés teljesítési dátuma" -#: order/models.py:285 +#: order/models.py:309 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:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "Mennyiség pozitív kell legyen" -#: order/models.py:575 +#: order/models.py:599 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:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "Vevői azonosító " -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "Megrendelés azonosító kódja a vevőnél" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "Cél dátum a rendelés teljesítéséhez. Ez után számít majd késettnek." -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "Kiszállítás dátuma" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "szállította" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "A rendelés nem teljesíthető mivel nincs hozzárendelve alkatrész" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "Csak függő rendelés jelölhető késznek" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "A rendelés nem jelölhető késznek mivel nem teljesített szállítások vannak" -#: order/models.py:672 +#: order/models.py:696 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:837 +#: order/models.py:861 msgid "Item quantity" msgstr "Tétel mennyiség" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "Sortétel azonosító" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "Sortétel megjegyzései" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "Cél szállítási dátuma ennek a sortételnek" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "Rendelés" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Beszerzési rendelés" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "Beszállítói alkatrész" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "Beérkezett" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Beszerzési ár" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "Beszerzési egységár" -#: order/models.py:937 +#: order/models.py:991 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:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "Eladási ár" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "Eladási egységár" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "Szállított mennyiség" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "Szállítás dátuma" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "Ellenőrizte" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "Szállítmány száma" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "Szállítás megjegyzései" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "Nyomkövetési szám" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "Szállítmány nyomkövetési információ" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "Szállítmány már elküldve" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "Készlet tétel nincs hozzárendelve" -#: order/models.py:1213 +#: order/models.py:1297 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:1215 +#: order/models.py:1299 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:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "Készlet tétel túlfoglalva" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 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:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "Vevői rendelés nem egyezik a szállítással" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "Szállítás nem egyezik a vevői rendeléssel" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "Sor" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "Szállítmány" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "Vevői rendelés szállítás azonosító" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "Tétel" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "Válaszd ki a foglalásra szánt készlet tételt" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "Beszérzési ár pénzneme" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "Sortétel" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "Sortétel nem egyezik a beszerzési megrendeléssel" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "Válassz cél helyet a beérkezett tételeknek" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "Írd be a batch kódját a beérkezett tételeknek" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "Írd be a sorozatszámokat a beérkezett tételekhez" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "Vonalkód hash" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "Egyedi azonosító mező" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "Ez a vonalkód már használva van" -#: order/serializers.py:331 +#: order/serializers.py:399 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:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "Sortételt meg kell adni" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "A cél helyet kötelező megadni" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "Megadott vonalkódoknak egyedieknek kel lenniük" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "Eladási ár pénzneme" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "Nincsenek szállítmány részletek megadva" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "Mennyiség pozitív kell legyen" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "Írd be a sorozatszámokat a kiosztáshoz" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "Szállítmány kiszállítva" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "Szállítás nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "Nincs találat a következő sorozatszámokra" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "A következő sorozatszámok már ki lettek osztva" @@ -3725,7 +3809,12 @@ msgstr "Hiányos" msgid "Issued" msgstr "Kiküldve" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "Beszerzési rendelés szerkesztése" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "Hibák vannak a küldött adatokban" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Beszállítói alkatrész kiválasztása" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Sor törlése" @@ -3789,19 +3876,11 @@ msgstr "Sor törlése" msgid "Return to Orders" msgstr "Vissza a rendelésekhez" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "Fájl feltöltése a beszerzési megrendeléshez" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "%(step)s/%(count)s. lépés" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "A rendelést már feldolgozták. Így már nem lehet fájlokat feltölteni." @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "Válassz létező beszerzési rendelést vagy készíts újakat." #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "Tételek" @@ -3865,7 +3944,7 @@ msgstr "Beszerzési rendelés kiválasztása %(name)s-hez" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "Sortételek" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "Beszerzési rendelés tételei" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "Sortétel hozzáadása" @@ -3889,15 +3968,30 @@ msgstr "Sortétel hozzáadása" msgid "Receive selected items" msgstr "Kiválasztott tételek bevételezése" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "Érkezett tételek" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "Rendelés megjegyzések" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "Csomagolási lista nyomtatása" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "Vevői rendelés befejezése, minden kiszállítva" @@ -3921,17 +4015,17 @@ 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:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "Vevői azonosító" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Kész szállítások" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "Vevői rendelés szerkesztése" @@ -3948,17 +4042,17 @@ msgstr "A rendelés törlésével annak adatai a továbbiakban már nem lesznek msgid "Sales Order Items" msgstr "Vevői rendelés tételek" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "Függő szállítmányok" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "Műveletek" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "Új szállítmány" @@ -4029,52 +4123,52 @@ msgstr "A {part} egységára {price}-ra módosítva" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "Beérkező beszerzési rendelés" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "Kimenő vevői rendelés" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "Gyártással előállított készlet" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "A gyártási utasításhoz szükséges készlet" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "Érvényes" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "Nullánál nagyobb kell legyen" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "Érvényes mennyiségnek kell lennie" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "Hely megadása a kezdeti alkarész készlethez" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "Ez a mező kötelező" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Alapértelmezett hely" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "Elérhető készlet" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "Rendelve" @@ -4121,14 +4215,14 @@ msgstr "Alapértelmezett kulcsszavak" msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Alkatrész kategóriák" @@ -4138,9 +4232,8 @@ msgstr "Alkatrész kategóriák" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Alkatrészek" @@ -4165,466 +4258,470 @@ msgstr "A következő szabad sorozatszám" msgid "Most recent serial number is" msgstr "A legutóbbi sorozatszám" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "Azonos IPN nem engedélyezett az alkatrész beállításokban" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Alkatrész neve" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "Sablon-e" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "Ez egy sablon alkatrész?" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Ez az alkatrész egy másik változata?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Ebből a sablonból" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Alkatrész leírása" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Kulcsszavak" -#: part/models.py:842 +#: part/models.py:847 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:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Kategória" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "Alkatrész kategória" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" -msgstr "IPN" +msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "Belső cikkszám" -#: part/models.py:862 +#: part/models.py:867 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:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Változat" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "Alapban hol tároljuk ezt az alkatrészt?" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "Alapértelmezett beszállítói alkatrész" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "Alapértelmezett lejárat" -#: part/models.py:941 +#: part/models.py:946 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:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Minimális készlet" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "Minimálisan megengedett készlet mennyiség" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "Az alkatrész raktározási mértékegységei" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Gyártható-e ez az alkatrész más alkatrészekből?" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Aktív-e ez az alkatrész?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "Alkatrész megjegyzései - támogatja a Markdown formázást" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "Alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "Tárolt alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "Alkatrészjegyzéket ellenőrizte" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "Alkatrészjegyzék ellenőrzési dátuma" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "Létrehozó" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "Több értékesítése" -#: part/models.py:2413 +#: part/models.py:2442 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:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "Erre az alkatrészre már létezik teszt ilyen névvel" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "Kötelező" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:2469 +#: part/models.py:2498 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:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:2475 +#: part/models.py:2504 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:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "Érvénytelen karakter ({c}) a sablon nevében" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "Paraméter mértékegysége" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "Adat" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Alkatrész ID" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "Alkatrész neve" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "Szint" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcionális" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:2756 +#: part/models.py:2799 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:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Örökölt" -#: part/models.py:2769 +#: part/models.py:2812 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:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:2775 +#: part/models.py:2818 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:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 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:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:3005 +#: part/models.py:3048 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:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "1.rész" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "2.rész" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Hiba a kapcsolat létrehozása közben: ellenőrizd hogy az alkatrész nem kapcsolódik-e saját magához és azt hogy a kapcsolat egyedi" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "Beszerzési pénzneme ennek a készlet tételnek" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "Létező adat törlése" -#: part/serializers.py:847 +#: part/serializers.py:935 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:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: part/serializers.py:853 +#: part/serializers.py:941 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:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "Hibás sorok kihagyása" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "Engedély a hibás sorok kihagyására" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "Helyettesítő alkatrészek másolása" -#: part/serializers.py:865 +#: part/serializers.py:953 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:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "Meglévő alkatrészjegyzék törlése" -#: part/serializers.py:910 +#: part/serializers.py:998 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:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "Nincs megadva alkatrész oszlop" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "Több egyező alkatrész is található" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "Nincs egyező alkatrész" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "Az alkatrész nem lett összetevőként jelölve" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "Mennyiség nincs megadva" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "Érvénytelen mennyiség" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "Legalább egy alkatrészjegyzék tétel szükséges" @@ -4656,7 +4753,7 @@ msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzéket utoljár msgid "The BOM for %(part)s has not been validated." msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzék még nincs jóváhagyva." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "Alkatrészjegyzék műveletek" @@ -4708,7 +4805,7 @@ msgstr "Kategória elérési út" msgid "Top level part category" msgstr "Legfelső szintű alkatrész kategória" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alkategóriák" @@ -4745,23 +4842,23 @@ msgstr "Exportálás" msgid "Export Data" msgstr "Adatok exportálása" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "Alkatrész paraméterek" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "Alkatrész kategória létrehozása" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "Alkatrész létrehozása" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "Új alkatrész létrehozása ez után" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "Alkatrész sikeresen létrehozva" @@ -4801,7 +4898,7 @@ msgstr "Ha ez a kategória törölve lesz, ezek az alkatrészek a legfelső kate msgid "Import Parts" msgstr "Alkatrészek importálása" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "Alkatrész másolása" @@ -4837,174 +4934,175 @@ msgstr "Alkatrész teszt sablonok" msgid "Add Test Template" msgstr "Teszt sablon hozzáadása" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "Vevői rendeléshez foglalások" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" -msgstr "" +msgstr "Alkatrész megjegyzések" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "Alkatrész változatok" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "Új változat létrehozása" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "Új változat" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "Paraméter hozzáadása" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "Kapcsolódó alkatrészek" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "Kapcsolódó hozzáadása" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Alkatrészjegyzék" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "Exportálási műveletek" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Alkatrészjegyzék exportálása" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "Alkatrészjegyzék riport nyomtatása" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "Alkatrészjegyzék feltöltése" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Alkatrészjegyzék másolása" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "Alkatrészjegyzék jóváhagyása" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "Új alkatrészjegyzék tétel" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "Alkatrészjegyzék tétel hozzáadása" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "Gyártmányok" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "Alkatrész gyártások" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "Gyártáshoz foglalások" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Alkatrész beszállítók" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Alkatrész gyártók" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "Gyártói alkatrészek törlése" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "Alkatrészjegyzék tétel létrehozása" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "Kapcsolódó alkatrész" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "Kapcsolódó alkatrész hozzáadása" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "Teszt eredmény sablon hozzáadása" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Beszerzési egységár - %(currency)s" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Egységár-önköltség különbség - %(currency)s" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Beszállítói egység költség - %(currency)s" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "Egységár - %(currency)s" #: 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 "Hiányzó kiválasztás a következő oszlopokhoz" #: 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 "Többszörös kiválasztás található, lásd lentebb. Javítsd őket aztán próbáld újraküldeni." #: 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 "Fájl mezők" #: 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 "Oszlop eltávolítása" #: 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 "Kijelöltek másolása" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "%(step)s/%(count)s. lépés" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "Nincs megfelelő jogosultság." @@ -5012,7 +5110,7 @@ msgstr "Nincs megfelelő jogosultság." msgid "Return to Parts" msgstr "Vissza az alkatrészekhez" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "Alkatrészek importálása fájlból" @@ -5112,13 +5210,13 @@ msgstr "Virtuális (nem kézzelfogható alkatrész)" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "Inaktív" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "Alkatrész részletei" @@ -5127,142 +5225,124 @@ msgstr "Alkatrész részletei" msgid "This part is a variant of %(link)s" msgstr "Ez az alkatrész egy változata a %(link)s alkatrésznek" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "Készleten" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "Gyártáshoz szükséges" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "Gyártáshoz lefoglalva" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "A szükséges mennyiség nem lett lefoglalva" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "A szükséges mennyiség lefoglalva" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "Vevői rendelésekhez szükséges" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "Vevő rendeléshez lefoglalva" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "Gyártható" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "Gyártásban" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "Minimális készlet" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "Legutolsó sorozatszám" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "Sorozatszámra keresés" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "Számítás" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "Nincs egyező kép" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "Részletek elrejtése" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "Beszállító árazás" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "Egység költség" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "Teljes költség" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "Nincs beszállítói árinfomáció" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "Alkatrészjegyzék árazás" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "Beszerzési egységár" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "Teljes beszerzési ár" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "Megjegyzés: ennek az alkatrésznek az alkatrészjegyzék árazása nem teljes" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "Nincs alkatrészjegyzék árinfomáció" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "Belső ár" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "Az alkatrészhez nem áll rendelkezésre árinformáció." -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "Változatok" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Felhasználva ebben" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "Ütemezés" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "Teszt sablonok" @@ -5307,69 +5387,69 @@ msgstr "Ennek az alkatrésznek %(count)s beszállítója van. Ha törlöd a köv msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "Összesen %(count)s követésre kötelezett '%(full_name)s' alkatrész van. Ha törlöd, a követési információk véglegesen elvesznek." -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "Ártartományok" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "Beszállítói költség megjelenítése" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "Beszerzési ár megjelenítése" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "Alkatrészjegyzék költség megjelenítése" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "Értékesítési költség megjelenítése" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "Eladási ár megjelenítése" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "Számítási paraméterek" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "Beszállítói költség" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "Ugrás az áttekintéshez" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "Készlet árazás" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "Az alkatrészhez nem áll rendelkezésre ártörténet." -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "Belső költség" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "Belső árlépcső hozzáadása" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "Alkatrészjegyzék költség" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "Eladási költség" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "Az alkatrészhez nem áll rendelkezésre eladási ártörténet." @@ -5377,8 +5457,8 @@ msgstr "Az alkatrészhez nem áll rendelkezésre eladási ártörténet." msgid "Set category for the following parts" msgstr "Állítsd be a következő alkatrészek kategóriáját" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "Nincs készlet" @@ -5432,103 +5512,96 @@ msgstr "Alkatrész változat létrehozása" msgid "Create a new variant of template '%(full_name)s'." msgstr "Új változat létrehozása a '%(full_name)s' sablonból." -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "Ismeretlen adatbázis" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "Alkatrész kategória beállítása" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "Állítsd be {n} alkatrész kategóriáját" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "Azonosítók egyeztetése" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "Egyik sem" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "Alkatrész QR kódja" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "Válassz képet az alkatrészhez" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "Alkatrész képe frissítve" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "Az alkatrész képe nem található" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "Alkatrész törlés megerősítése" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "Alkatrész törölve" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "Alkatrész árak" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "Alkatrész paraméter sablon létrehozása" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "Alkatrész paraméter sablon módosítása" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "Alkatrész paraméter sablon törlése" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "Alkatrész kategória szerkesztése" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "Alkatrész kategória törlése" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "Alkatrész kategória törölve" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "Kategória paraméter sablon létrehozása" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "Kategória paraméter sablon szerkesztése" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "Kategória paraméter sablon törlése" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "Új árlépcső hozzáadva" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "Belső árlépcső szerkesztése" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "Belső árlépcső törlése" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "A környezeted egy elavult git verziót használ. Ez megakadályozza hogy az InvenTree betöltse a plugin részleteit." @@ -5537,11 +5610,11 @@ msgstr "A környezeted egy elavult git verziót használ. Ez megakadályozza hog msgid "Label printing failed" msgstr "Címkenyomtatás sikertelen" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "Nincs szerző" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "Nincs dátum" @@ -5571,7 +5644,7 @@ msgstr "Aktív-e a plugin" #: plugin/models.py:182 msgid "Plugin" -msgstr "Plugin" +msgstr "" #: plugin/samples/integration/sample.py:42 msgid "Enable PO" @@ -5637,92 +5710,92 @@ msgstr "Tlepítés nincs megerősítve" msgid "Either packagename of URL must be provided" msgstr "Vagy csomag nevet vagy URL-t meg kell adni" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" -msgstr "A '{filename}' sablon fájl hiányzik vagy nem érhető el" +msgid "Template file '{template}' is missing or does not exist" +msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Sablon neve" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "Riport sablon fájl" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "Riport sablon leírása" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "Riport verziószáma (automatikusan nő)" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "Minta a riport fájlnevek előállításához" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "Riport sablon engedélyezve" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Készlet lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "Beépített tesztekkel együtt" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "Gyártmányba beépített készlet tételek teszt eredményeivel együtt" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "Gyártás szűrők" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Gyártás lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "Alkatrész szűrők" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "Megrendelés lekérdezés szűrők" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "Vevő rendelés lekérdezés szűrők" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "Részlet" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "Riport részlet fájl" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "Részlet fájl leírása" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" -msgstr "Asset" +msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "Riport asset fájl" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "Asset fájl leírása" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "Készlet tétel teszt riport" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Sorozatszám" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "Eredmény" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "Dátum" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "Beépített tételek" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "Sorozatszám" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "Mennyiség megadása kötelező" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "Egy érvényes alkatrészt meg kell adni" -#: stock/api.py:535 +#: stock/api.py:577 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/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "Lejárati dátum" @@ -5838,228 +5911,232 @@ msgstr "Kiszedés megerősítése" msgid "Confirm removal of installed stock items" msgstr "Beépített készlet tételek eltávolításának megerősítése" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "Tulajdonos" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "Tulajdonos kiválasztása" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "Létezik már készlet tétel ilyen a sorozatszámmal" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "A alkatrész típus ('{pf}') {pe} kell legyen" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 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:489 +#: stock/models.py:525 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:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "A tétel nem tartozhat saját magához" -#: stock/models.py:517 +#: stock/models.py:553 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:524 +#: stock/models.py:560 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:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "Szülő készlet tétel" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "Kiindulási alkatrész" -#: stock/models.py:584 +#: stock/models.py:620 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:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Készlet hely" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:600 +#: stock/models.py:636 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:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "Beépítve ebbe" -#: stock/models.py:609 +#: stock/models.py:645 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:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "Készlet mennyiség" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "Forrás gyártás" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "Gyártás ehhez a készlet tételhez" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "Forrás beszerzési rendelés" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "Beszerzés ehhez a készlet tételhez" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "Cél vevői rendelés" -#: stock/models.py:681 +#: stock/models.py:718 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:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "Törlés ha kimerül" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "Készlet tétel megjegyzések" -#: stock/models.py:713 +#: stock/models.py:750 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:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "Alkatrésszé alakítva" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "A mennyiség nem lépheti túl a készletet ({n})" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Ezek a sorozatszámok már léteznek: {exists}" -#: stock/models.py:1334 +#: stock/models.py:1398 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:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1364 +#: stock/models.py:1428 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:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1540 +#: stock/models.py:1604 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:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "Teszt neve" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "Tesztek megjegyzései" @@ -6067,10 +6144,6 @@ msgstr "Tesztek megjegyzései" msgid "Purchase price of this stock item" msgstr "Beszerzési ára ennek a készlet tételnek" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Beszerzési pénzneme ennek a készlet tételnek" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal" @@ -6096,7 +6169,7 @@ msgstr "Opcionális megjegyzés mező" msgid "Serial numbers cannot be assigned to this part" msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "A sorozatszámok már léteznek" @@ -6180,46 +6253,46 @@ msgstr "Készlettörténeti információk" msgid "New Entry" msgstr "Új bejegyzés" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "Al-készlet tételek" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "Ez a készlet tétel nem tartalmaz egy altételt sem" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Teszt adatok" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "Teszt riport" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "Teszt adatok törlése" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "Teszt adatok hozzáadása" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "Beépített készlet tételek" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "Vonalkód leválasztása" @@ -6323,7 +6396,7 @@ 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:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "Lejárt" @@ -6333,12 +6406,12 @@ 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:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "Állott" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "Utoljára módosítva" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua 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:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Nincs beállítva hely" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "Alhelyek" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Készlethelyek" @@ -6551,11 +6623,11 @@ msgstr "Ez a művelet nem vonható vissza könnyen" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "Biztosan törölni akarod ezt a készlettörténeti bejegyzést?" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "Készlet hely szerkesztése" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "Tulajdonos szükséges (tulajdonosok kezelése engedélyezve van)" @@ -6595,7 +6667,7 @@ msgstr "Készlet tétel QR kódja" msgid "Uninstall Stock Items" msgstr "Készlet tétel kiszedése" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "Készlet módosítás jóváhagyása" @@ -6603,85 +6675,86 @@ msgstr "Készlet módosítás jóváhagyása" msgid "Uninstalled stock items" msgstr "Kiszedett készlet tételek" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "Készlet tétel szerkesztése" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Új készlet hely létrehozása" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "Új készlet tétel létrehozása" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "Készlet tétel másolása" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "A mennyiség nem lehet negatív" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "Készlethely törlése" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "Készlet tétel törlése" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "Készlettörténet bejegyzés törlése" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "Készlettörténet bejegyzés szerkesztése" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "Készlettörténet bejegyzés hozzáadása" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Hozzáférés megtagadva" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "Nincs jogosultságod az oldal megtekintéséhez." -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "Az oldal nem található" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "A kért oldal nem létezik" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "Belső kiszolgáló hiba" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" -msgstr "Az InvenTree kiszolgáló belső hibát jelzett" - #: 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 "Nézd meg az admin felületen lévő hibanaplót bővebb információkért" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "Az oldal karbantartás alatt" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "Az oldal jelenleg karbantartás alatt van, hamarosan újra használható lesz!" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "Index" +msgstr "" #: templates/InvenTree/index.html:88 msgid "Subscribed Parts" @@ -6707,6 +6780,10 @@ msgstr "Nemrég frissítve" msgid "Depleted Stock" msgstr "Kimerült készlet" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "Gyártáshoz szükséges" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "Lejárt készlet" @@ -6721,7 +6798,7 @@ msgstr "Folyamatban lévő gyártások" #: templates/InvenTree/index.html:235 msgid "Overdue Build Orders" -msgstr "Megkésett gyártások" +msgstr "Késésben lévő gyártások" #: templates/InvenTree/index.html:255 msgid "Outstanding Purchase Orders" @@ -6729,7 +6806,7 @@ msgstr "Kintlévő beszerzési rendelések" #: templates/InvenTree/index.html:266 msgid "Overdue Purchase Orders" -msgstr "Megkésett megrendelések" +msgstr "Késésben lévő megrendelések" #: templates/InvenTree/index.html:286 msgid "Outstanding Sales Orders" @@ -6737,7 +6814,7 @@ msgstr "Függő vevői rendelések" #: templates/InvenTree/index.html:297 msgid "Overdue Sales Orders" -msgstr "Megkésett vevői rendelések" +msgstr "Késésben lévő vevői rendelések" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "Életkor" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "Üzenet" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "Regisztráció" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "Beállítások" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "Plugin beállítások" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." -msgstr "Az alábbi beállítások módosításához az InvenTree azonnali újraindítása szükséges. Aktív használat közben ne változtass ezeken." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "Pluginok" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "Plugin Telepítése" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" -msgstr "Admin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "Szerző" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "Verzió" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "kód minta" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "Inaktív pluginok" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "Plugin hibatároló" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "Szakasz" @@ -6968,8 +7049,8 @@ msgid "This plugin was installed as a package" msgstr "Ez a plugin csomagként lett telepítve" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Ez a plugin a lokális InvenTree útvonalon található" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" @@ -7111,7 +7192,7 @@ msgstr "Készlet beállítások" msgid "Change Password" msgstr "Jelszó módosítása" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7201,7 +7282,7 @@ msgstr "Ezek a faktorok állnak rendelkezésre:" #: templates/InvenTree/settings/user.html:187 msgid "TOTP" -msgstr "TOTP" +msgstr "" #: templates/InvenTree/settings/user.html:193 msgid "Static" @@ -7324,8 +7405,8 @@ msgstr "Segítsd a fordítási munkát!" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "A nyelvi fordításai az InvenTree web alkalmazásnak közösségiek a crowdin-en. A közreműködéseket szívesen fogadjuk és bátorítjuk." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please Klikk ide az új megerősítési kérelem elküldéséhez." #: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "Bejelentkezés" @@ -7441,19 +7522,11 @@ msgid "If you have not created an account yet, then please\n" "sign up first." msgstr "Ha még nem hoztál létre fiókot akkor előbb regisztrálj." -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "Elfelejtett jelszó?" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "InvenTree demo példány" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "Kattints ide belépési részletekért" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "vagy használj SSO-t" @@ -7624,15 +7697,15 @@ 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:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "Szükséges mennyiség" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Elérhető" @@ -7642,10 +7715,6 @@ msgstr "Elérhető" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "Ezért kapod ezt a levelet mert értesítést kértél erre az alkatrészre " -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "InvenTree verzió" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez" @@ -7762,101 +7831,101 @@ msgstr "Melléklet szerkesztése" msgid "Delete attachment" msgstr "Melléklet törlése" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "Vonalkód beolvasása ide a kódolvasó használatával" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "Add meg a vonalkódot" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "Vonalkód" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "Megjegyzések a készlet áthelyezéshez" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "Írd be a megjegyzéseket" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "Kiszolgálóhiba" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "Ismeretlen válasz a kiszolgálótól" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "Érvénytelen válasz a szervertől" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "Olvasd be a vonalkódot lentebb" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "Vonalkód beolvasása" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "Nincs URL a válaszban" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "Vonalkód hozzárendelése a készlet tételhez" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "Ez törli az összerendelést a készlet tétel és a vonalkód között" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "Leválasztás" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "Készlet tétel törlése" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "Készlet bevételezése az adott helyre" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "Bevételezés" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "Nincs vonalkód beolvasva" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "Készlet tétel már beolvasva" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "Készlet tétel már ezen a helyen van" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "Hozzáadott készlet tétel" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "Vonalkód nem egyezik a készlet tétellel" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "Bevételezés az adott helyre" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "A vonalkód nem egyezik egy ismert hellyel sem" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "Alkarészjegyzék sablon letöltése" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "Formátum" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "Fájlfomátum kiválasztása" @@ -7954,75 +8023,84 @@ msgstr "Helyettesítő hozzáadása" msgid "Edit BOM Item Substitutes" msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "Vannak helyettesítők" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "Készletváltozatok engedélyezve" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "Al-gyártmány megnyitása" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" -msgstr "" +msgstr "Nincs szabad" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "Változatokkal és helyettesítőkkel együtt" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "Változatokkal együtt" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" -msgstr "" +msgstr "Helyettesítőkkel együtt" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "Helyettesítõk" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "Beszerzési ártartomány" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "Beszerzési átlagár" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "Alkatrészjegyzék megtekintése" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "Alkatrészjegyzék tétel jóváhagyása" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "Ez a sor jóvá lett hagyva" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "Helyettesítő alkatrészek szerkesztése" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "Alkatrészjegyzék tétel szerkesztése" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "Alkatrészjegyzék tétel törlése" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "Nem találhatók alkatrészjegyzék tételek" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "Biztos törölni akarod ezt az alkatrészjegyzék tételt?" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "Szükséges alkatrész" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "Örökölve a szülő alkatrészjegyzéktől" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "Gyártási utasítás befejezése" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "Következő szabad sorozatszám" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "Legutolsó sorozatszám" @@ -8100,173 +8178,193 @@ msgstr "Biztosan szeretnéd a már lefoglalt készlet tételeket felszabadítani msgid "Unallocate Stock Items" msgstr "Készlet tételek felszabadítása" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "Gyártási kimenetek kiválasztása" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 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:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "Kimenet" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "Gyártási kimenetek befejezése" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "Gyártási kimenetek törlése" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "Nincs gyártási utasításhoz történő foglalás" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "Hely nincs megadva" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "Nem található aktív gyártási kimenet" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "Készlet foglalások törlése" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "Foglalás szerkesztése" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "Foglalás törlése" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "Vannak helyettesítő alkatrészek" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "Szükséges/db" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "Nincs elegendő" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "Van elegendő" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "Lefoglalva" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "betöltés" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "Gyártási készlet" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "Készlet rendelés" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "Lefoglalt készlet" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Kiválasztott alkatrészek" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 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:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "Minden alkatrész lefoglalva" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "Minden kiválasztott alkatrész teljesen lefoglalva" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 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:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Készlet foglalás megerősítése" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "Készlet foglalása a gyártási utasításhoz" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "Nincs egyező készlethely" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "Nincs egyező készlet" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "Automatikus készlet foglalás" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "A készlet automatikusan lefoglalásra került ehhez a gyártási utasításhoz, a megadott feltételek szerint" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, 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:1902 +#: templates/js/translated/build.js:2251 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:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "Készlet tételek foglalása" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "Kiválaszt" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" -msgstr "Gyártási utasítás megkésett" +msgstr "Gyártás késésben van" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "Nincs felhasználói információ" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "Nincs információ" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "Nincs lefoglalt alkatrész ehhez" @@ -8286,7 +8384,7 @@ msgstr "Gyártói alkatrész szerkesztése" msgid "Delete Manufacturer Part" msgstr "Gyártói alkatrész törlése" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "Beszállító hozzáadása" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "Nincs gyártói alkatrész" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "Sablon alkatrész" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "Gyártmány alkatrész" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "Nem található paraméter" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "Paraméter törlése" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "Paraméter törlése" @@ -8466,16 +8564,16 @@ msgstr "IGEN" msgid "NO" msgstr "NEM" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" -msgstr "" +msgstr "Megjegyzések frissítve" #: templates/js/translated/label.js:39 msgid "Labels sent to printer" msgstr "Címkék nyomtatónak elküldve" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "Készlet tételek kiválasztása" @@ -8591,294 +8689,332 @@ msgstr "Form adat lekérése sikertelen" msgid "Company ID" msgstr "Cég ID" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "Készlet ID" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "Hely ID" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "Gyártás ID" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "Rendelés ID" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "Szállítmány ID" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "Kategória ID" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "Gyártói cikkszám" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "Beszállítói cikkszám" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "Megjelölés olvasatlanként" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "Megjelölés olvasottként" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "Nincs olvasatlan értesítés" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "Az értesítések itt fognak megjelenni" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 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/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "A következő készlet tételek ki lesznek szállítva" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "Szállítmány kész" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "Szállítmány megerősítése" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "Szállítmány létrehozása" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "Vevő hozzáadása" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "Vevői rendelés létrehozása" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "Rendelés exportálása" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "Sortételek kiválasztása" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "Legalább egy sortételt ki kell választani" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "Batch kód hozzáadása" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "Sorozatszám hozzáadása" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "Érkező mennyiség" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "Készlet állapota" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "Rendelési kód" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "Megrendelve" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "Érkező mennyiség" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "Bevételezés megerősítése" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "Beszerzési rendelés tételeinek bevételezése" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "Nem található beszerzési rendelés" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" -msgstr "Rendelés megkésett" +msgstr "Rendelés késésben" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "Sortétel másolása" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "Sortétel szerkesztése" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "Sortétel törlése" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "Nem találhatók sortételek" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "Összesen" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "Egységár" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "Teljes ár" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" -msgstr "Ez a sortétel megkésett" +msgstr "Ez a sortétel késésben van" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "Sortétel bevételezése" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "Sortétel másolása" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "Sortétel szerkesztése" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "Sortétel törlése" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "Nem található vevői rendelés" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "Érvénytelen vevő" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "Szállítmány szerkesztése" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "Szállítmány kész" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "Szállítmány törlése" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "Szállítmány szerkesztése" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "Szállítmány törlése" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "Nincs egyező szállímány" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "Szállítmány azonosító" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "Nincs szállítva" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "Követés" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Készlet foglalás megerősítése" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "Készlet foglalása a vevői rendeléshez" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "Nincs vevői rendeléshez történő foglalás" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "Törlési művelet megerősítése" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "Készlet foglalások törlése" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "Vevőnek kiszállítva" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "Készlethely nincs megadva" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "Sorozatszámok kiosztása" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "Készletrendelés" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "Árszámítás" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 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/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "Nem törölhető mivel tételek vannak lefoglalva" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "Sorozatszámok kiosztása" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "Egységár módosítása" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "Nincs egyező sortétel" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Alkatrész tulajdonságok" @@ -8959,177 +9095,177 @@ msgstr "Parméterek másolása az eredeti alkatrészről" msgid "Parent part category" msgstr "Felsőbb szintű alkatrész kategória" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "Alkatrész szerkesztése" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "Alkatrész módosítva" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "Alkatrész változat létrehozása" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "Értesítések kérése erre a tételre" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "Értesítések letiltva erre a tételre" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "Alkatrészjegyzék jóváhagyása" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "Alkatrészjegyzék jóvá lett hagyva" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "Alkatrészjegyzék másolása" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "Alacsony készlet" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "Nincs szabad" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "Követésre kötelezett alkatrész" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "Virtuális alkatrész" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "Értesítésre beállított alkatrész" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "Értékesíthető alkatrész" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Nincs több változat" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Nincs alkatrész" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "Nincs szabad" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Nincs kategória" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Megjelenítés listaként" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Megjelenítés rácsnézetként" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Megjelenítés fában" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "Értesítésre beállított kategória" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Elérési út" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "Nincs a lekérdezéssel egyező teszt sablon" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "Ez a teszt a szülő alkatrészhez lett felvéve" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "Teszt eredmény sablon szerkesztése" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "Teszt eredmény sablon törlése" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "Nincs ${human_name} információ" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "${human_name} szerkesztése" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "${human_name} törlése" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "Aktuális készlet" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 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:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "Ütemezett készlet mennyiség" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "Egységes ár" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "Egységes ár különbség" @@ -9223,328 +9359,328 @@ msgstr "Készlet sorozatszámozás megerősítése" msgid "Parent stock location" msgstr "Felsőbb szintű készlet hely" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "Új készlet hely" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "Ezt az alkatrészt nem lehet sorozatszámozni" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "Add meg a kezdeti mennyiséget ehhez a készlet tételhez" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd üresen)" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "Készlet tétel lemásolva" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "Készlet tétel létrehozva" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "Több készlet tétel létre lett hozva" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "Sorozatszám keresése" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "Sorozatszám megadása" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "Adj meg egy sorozatszámot" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "Nincs egyező sorozatszám" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "Több egyező eredmény is van" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "Készlet hozzárendelés jóváhagyása" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "Készlet vevőhöz rendelése" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "Figyelem: az összevonási művelet nem vonható vissza" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "Némi információ elveszik a készlet összevonás során" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "A készlettörténet törölve lesz az összevont tételeknél" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "A beszállítói alkatrész információk törlődnek az összevont tételeknél" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "Készlet összevonás megerősítése" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "Készlet tételek összevonása" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "Készlet áthelyezése" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "Áthelyezés" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "Leltározás" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "Mennyiség" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "Készlet csökkentése" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "Kivesz" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "Készlet növelése" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "Hozzáad" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "Készlet törlése" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosítható" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "Készlet mennyiség megadása" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "Ki kell választanod legalább egy rendelkezésre álló készlet tételt" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "SIKER" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "SIKERTELEN" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "NINCS EREDMÉNY" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "Teszt sikeres" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "Teszt eredmény hozzáadása" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "Nincs teszt eredmény" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "Teszt dátuma" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "Gyártásban" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "Beépítve készlet tételbe" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "Vevő rendeléshez hozzárendelve" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Nincs hely megadva" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "Készlet tétel gyártás alatt" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "Készlet tétel lejárt" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "Készlet tétel hamarosan lejár" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "Készlet tétel teljes egészében lefoglalva" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "Készlet tétel részben lefoglalva" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 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:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "Készlet tétel elutasítva" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "Készlet tétel elveszett" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "Készlet tétel megsemmisült" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Kimerült" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "Leltár" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "Beszállítói alkatrész nincs megadva" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "Nincs a lekérdezésnek megfelelő készlet tétel" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "Készlet állapot beállítása" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "Státuszkód kiválasztása" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "Státuszkódot ki kell választani" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "Részletek" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "Alkatrész információ nem áll rendelkezésre" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "A hely már nem létezik" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "Beszerzési megrendelés már nem létezik" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "Vevő már nem létezik" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "A készlet tétel már nem létezik" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "Hozzáadva" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "Eltávolítva" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "Készlettörténet bejegyzés szerkesztése" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "Készlettörténet bejegyzés törlése" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "Nincsenek beépített tételek" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "Készlet tétel kiszedése" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 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:2625 +#: templates/js/translated/stock.js:2658 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:2627 +#: templates/js/translated/stock.js:2660 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:2628 +#: templates/js/translated/stock.js:2661 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:2629 -msgid "The Stock Item is serialized and does not belong to another item" -msgstr "A készlet tétel egyedi követésre kötelezett és nem tartozik másik tételhez" +#: templates/js/translated/stock.js:2662 +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:2642 +#: templates/js/translated/stock.js:2663 +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:2676 msgid "Select part to install" msgstr "Válaszd ki a beépítendő alkatrészt" @@ -9575,12 +9711,12 @@ msgstr "Helyekkel együtt" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "Alkategóriákkal együtt" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "Értesítés beállítva" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "Sorozatszám" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Batch kód" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "Aktív alkatrész" @@ -9691,68 +9827,88 @@ msgstr "Készlet tételek melyek hozzá vannak rendelve egy vevőhöz" msgid "Stock status" msgstr "Készlet állapota" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "Van batch kódja" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "Követett" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "Követett készlet tétel sorozatszámmal vagy batch kóddal" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "Van beszerzési ára" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "Beszerzési árral rendelkező készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "Lejárt készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "Hamarosan lejáró készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "Teszten megfelelt" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "Beépített tételekkel együtt" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "Gyártási állapot" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "Hozzám rendelt" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "Rendelés állapota" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "Kintlévő" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "Alkategóriákkal együtt" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "Van IPN-je" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "Van belső cikkszáma" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "Aktív alkatrészek megjelenítése" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "Készleten" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "Elérhető" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "Beszerezhető" @@ -9792,7 +9948,7 @@ msgstr "a" msgid "rows" msgstr "sorból," -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,41 +9978,37 @@ msgstr "Oszlopok" msgid "All" msgstr "Összes" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Beszerzés" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Értékesítés" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "Értesítések megjelenítése" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "Új értesítések" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Kijelentkezés" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Bejelentkezés" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "Verzió információk" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "Inventree demo mód" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Mentés" #: templates/notifications.html:13 msgid "Show all notifications and history" @@ -10046,35 +10198,35 @@ msgstr "Jogosultságok" msgid "Important dates" msgstr "Fontos dátumok" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Jogosultságok" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Csoport" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Nézet" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Jogosultság tételek megtekintéséhez" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Jogosultság tételek hozzáadásához" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Módosítás" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Jogosultság tételek szerkesztéséhez" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Jogosultság tételek törléséhez" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.mo b/InvenTree/locale/id/LC_MESSAGES/django.mo deleted file mode 100644 index e0106c400d..0000000000 Binary files a/InvenTree/locale/id/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index 586458ded4..148c6c1ce1 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: id\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Konfirmasi alamat email" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -194,42 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -241,7 +249,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.mo b/InvenTree/locale/it/LC_MESSAGES/django.mo deleted file mode 100644 index 2f4d8f5075..0000000000 Binary files a/InvenTree/locale/it/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index cc2694af65..08eaf1e2c8 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: it\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Conferma indirizzo email" msgid "You must type the same email each time." msgstr "È necessario digitare la stessa e-mail ogni volta." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Quantità inserita non valida" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Numero seriale vuoto" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Gruppo non valido: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Nessun numero di serie trovato" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})" @@ -122,7 +130,7 @@ msgstr "File mancante" msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Allegato" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Seleziona file da allegare" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "Link" +msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Link a URL esterno" @@ -152,12 +160,12 @@ msgstr "Commento" msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Utente" @@ -194,42 +202,42 @@ msgstr "Errore nella rinominazione del file" msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Nome" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Descrizione" @@ -241,7 +249,7 @@ msgstr "Descrizione (opzionale)" msgid "parent" msgstr "genitore" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Deve essere un numero valido" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Tedesco" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Greco" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Inglese" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Spagnolo" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Spagnolo (Messicano)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Francese" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Ebraico" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Ungherese" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Giapponese" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Olandese" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norvegese" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polacco" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portoghese" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Russo" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Svedese" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Thailandese" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Cinese" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "Controlli di sistema InvenTree falliti" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "In attesa" @@ -400,14 +420,14 @@ msgstr "In attesa" msgid "Placed" msgstr "Inviato" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Completo" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Annullato" @@ -421,14 +441,14 @@ msgstr "Perso" msgid "Returned" msgstr "Reso" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Spedito" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Distrutto" msgid "Rejected" msgstr "Respinto" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Voce di tracciamento stock preesistente" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Elemento stock creato" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Elemento stock modificato" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Numero di serie assegnato" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Stock contato" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Stock aggiunto manualmente" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Stock rimosso manualmente" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Posizione cambiata" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Installato nell'assemblaggio" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Rimosso dall'assemblaggio" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Componente installato" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Elemento componente rimosso" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Diviso dall'elemento genitore" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Dividi elemento figlio" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Inviato al cliente" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Restituito dal cliente" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Genera l'output dell'ordine creato" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Build order output completato" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Ricevuto contro l'ordine di acquisto" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Produzione" @@ -570,27 +594,27 @@ msgstr "L'eccesso non deve superare il 100%" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Cancella elemento" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Spunta la casella per confermare l'eliminazione dell'elemento" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Modifica informazioni utente" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Imposta Password" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Le password devono coincidere" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Informazioni sistema" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Ordine di Produzione" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Ordini di Produzione" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Riferimento" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Articolo" @@ -734,8 +760,8 @@ msgstr "Numero di riferimento ordine di vendita" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Posizione Di Origine" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Data di creazione" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Data completamento obiettivo" @@ -797,8 +823,8 @@ msgstr "Data completamento obiettivo" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Data di completamento" @@ -806,7 +832,7 @@ msgstr "Data di completamento" msgid "completed by" msgstr "Completato da" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Rilasciato da" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Responsabile" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Collegamento esterno" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Note" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "L'articolo in giacenza è sovrallocato" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "La quantità di assegnazione deve essere maggiore di zero" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "La quantità deve essere 1 per lo stock serializzato" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "Articolo in giacenza selezionato non trovato nel BOM" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Produzione" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Articoli in magazzino" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Origine giacenza articolo" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Origine giacenza articolo" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Quantità" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Installa in" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Inserisci la quantità per l'output di compilazione" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Codice Seriale" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Posizione" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "Posizione per gli output di build completati" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "Stato" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "Distinta base (Bom)" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Data scadenza" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "In ritardo" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Completato" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Ordini di Vendita" @@ -1311,8 +1351,8 @@ msgstr "" 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:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Destinazione" @@ -1320,22 +1360,25 @@ msgstr "Destinazione" msgid "Destination location not specified" msgstr "Posizione di destinazione non specificata" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "Lotto" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Creato" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "Azioni di stampa" msgid "Print labels" msgstr "Stampa etichette" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Allegati" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "Assegnazione Completa" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "Tutte le giacenze non tracciate sono state assegnate" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1532,7 +1583,7 @@ msgstr "Errore di lettura del file (i dati potrebbero essere danneggiati)" #: common/forms.py:34 msgid "File" -msgstr "File" +msgstr "" #: common/forms.py:35 msgid "Select file to upload" @@ -1540,7 +1591,7 @@ msgstr "Seleziona file da caricare" #: common/forms.py:50 msgid "{name.title()} File" -msgstr "{name.title()} File" +msgstr "" #: common/forms.py:51 #, python-brace-format @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:680 +#: common/models.py:698 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:687 -msgid "InvenTree Instance Name" -msgstr "Nome Istanza InvenTree" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "URL Base" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Valuta predefinita" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:721 +#: common/models.py:746 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:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Abilita supporto scanner codici a barre" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" -msgstr "IPN Regex" - -#: common/models.py:735 -msgid "Regular expression pattern for matching Part IPN" -msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" - -#: common/models.py:739 -msgid "Allow Duplicate IPN" -msgstr "Consenti duplicati IPN" - -#: common/models.py:740 -msgid "Allow multiple parts to share the same IPN" -msgstr "Permetti a più articoli di condividere lo stesso IPN" - -#: common/models.py:746 -msgid "Allow Editing IPN" -msgstr "Permetti modifiche al part number interno (IPN)" - -#: common/models.py:747 -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:753 -msgid "Copy Part BOM Data" -msgstr "Copia I Dati Della distinta base dell'articolo" - -#: common/models.py:754 -msgid "Copy BOM data by default when duplicating a part" msgstr "" #: common/models.py:760 +msgid "Regular expression pattern for matching Part IPN" +msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" + +#: common/models.py:764 +msgid "Allow Duplicate IPN" +msgstr "Consenti duplicati IPN" + +#: common/models.py:765 +msgid "Allow multiple parts to share the same IPN" +msgstr "Permetti a più articoli di condividere lo stesso IPN" + +#: common/models.py:771 +msgid "Allow Editing IPN" +msgstr "Permetti modifiche al part number interno (IPN)" + +#: common/models.py:772 +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:778 +msgid "Copy Part BOM Data" +msgstr "Copia I Dati Della distinta base dell'articolo" + +#: common/models.py:779 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:761 +#: common/models.py:786 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:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 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:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" -msgstr "Template" +msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:789 +#: common/models.py:814 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:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Componente" -#: common/models.py:796 +#: common/models.py:821 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:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Vendibile" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Mostra il prezzo nei moduli" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "Mostra il prezzo dell'articolo in alcuni moduli" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Mostra il prezzo nella BOM" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "Includi le informazioni sui prezzi nelle tabelle BOM" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "Crea giacenza iniziale" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "Crea giacenza iniziale sulla creazione articolo" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "Prezzo interno come BOM-Price" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Utilizzare il prezzo interno (se impostato) nel calcolo del prezzo BOM" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Stampa di prova" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 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:953 +#: common/models.py:984 msgid "days" msgstr "giorni" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:966 +#: common/models.py:997 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:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "Referenza ordine d'acquisto" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:1021 +#: common/models.py:1056 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:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1259 +#: common/models.py:1319 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:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1266 +#: common/models.py:1326 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:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Prezzo" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Attivo" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Carica file" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Abbina Campi" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Articoli importati" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Passaggio Precedente" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2534,7 +2596,7 @@ msgstr "Numero di telefono di contatto" #: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:48 msgid "Email" -msgstr "Email" +msgstr "" #: company/models.py:125 msgid "Contact email address" @@ -2552,7 +2614,7 @@ msgstr "Punto di contatto" msgid "Link to external company information" msgstr "Collegamento alle informazioni aziendali esterne" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Immagine" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Valuta" @@ -2589,7 +2652,7 @@ msgstr "Valuta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Articolo di base" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Seleziona articolo" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Produttore" @@ -2613,11 +2676,11 @@ msgstr "Produttore" msgid "Select manufacturer" msgstr "Seleziona Produttore" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "Codice articolo produttore (MPN)" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "Descrizione articolo costruttore" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Codice articolo produttore" @@ -2646,8 +2709,8 @@ msgstr "Nome parametro" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Valore" @@ -2655,10 +2718,10 @@ msgstr "Valore" msgid "Parameter value" msgstr "Valore del parametro" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "Unità" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Fornitore" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "Seleziona fornitore" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "Descrizione articolo fornitore" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Nota" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "costo base" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Confezionamento" @@ -2733,7 +2796,7 @@ msgstr "Confezionamento" msgid "Part packaging" msgstr "Imballaggio del pezzo" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "multiplo" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "Azienda" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Crea ordine d'acquisto" @@ -2796,13 +2859,13 @@ msgstr "Carica nuova immagine" msgid "Download image from URL" msgstr "Scarica immagine dall'URL" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Cliente" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Telefono" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Carica immagine" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Crea nuovo fornitore" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Nuovo fornitore articolo" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Opzioni" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "Giacenza Fornitore" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Ordine di acquisto" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Elimina articoli fornitore?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" @@ -2949,83 +3012,83 @@ msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" msgid "Supplier List" msgstr "Elenco dei fornitori" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Produttori" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Articoli ordinati" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Articolo interno" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Fornitori" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Elimina articolo fornitore" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Elimina" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametri" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Nuovo Parametro" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "Elimina il parametro" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "Aggiungi parametro" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "Gli eventi selezionati verranno eliminati" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "Elimina Parametri" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "Articolo Fornitore" @@ -3074,7 +3137,7 @@ msgstr "Crea nuova allocazione magazzino" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "Nuovo Elemento in giacenza" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "Ordine Articolo" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Informazioni Prezzi" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "Aggiungi riduzione prezzo" @@ -3103,11 +3166,13 @@ msgstr "Aggiungi riduzione prezzo" msgid "No price break information found" msgstr "Nessuna informazione di riduzione di prezzo trovata" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "Elimina riduzione di prezzo" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Magazzino" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "Prezzo articolo del fornitore" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Prezzi" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Articoli in magazzino" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Nuovo Produttore" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Clienti" @@ -3186,20 +3252,20 @@ msgstr "Aziende" msgid "New Company" msgstr "Nuova Azienda" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Download Immagine" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "La dimensione dell'immagine supera la dimensione massima consentita per il download" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "Risposta non valida: {code}" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" @@ -3223,7 +3289,7 @@ msgstr "Etichetta" msgid "Label template file" msgstr "File modello etichetta" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Abilitato" @@ -3247,7 +3313,7 @@ msgstr "Altezza [mm]" msgid "Label height, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filtri" @@ -3285,374 +3351,392 @@ msgstr "Contrassegna ordine come completato" msgid "Cancel order" msgstr "Annulla l'ordine" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Descrizione ordine" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Creato Da" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "Utente o gruppo responsabile di questo ordine" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "Note ordine" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "Riferimento ordine" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "Stato ordine d'acquisto" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "Azienda da cui sono stati ordinati gli articoli" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "Riferimento fornitore" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "Codice di riferimento ordine fornitore" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "ricevuto da" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "Data di emissione" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "Data di emissione ordine" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "Data di consegna programmata" -#: order/models.py:250 +#: order/models.py:274 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:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "Data ordine completato" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "Articolo Fornitore" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "Inserisci la quantità assegnata alla giacenza" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "Emesso" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "Modifica ordine d'acquisto" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "Errori esistenti nei dati inviati" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Seleziona l'articolo del fornitore" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Elimina riga" @@ -3789,19 +3876,11 @@ msgstr "Elimina riga" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "Specifica la posizione per lo stock iniziale" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Posizione Predefinita" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "Disponibilità in magazzino" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "Ordinato" @@ -4121,14 +4215,14 @@ msgstr "Keywords predefinite" msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Categorie Articolo" @@ -4138,9 +4232,8 @@ msgstr "Categorie Articolo" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Articoli" @@ -4165,466 +4258,470 @@ msgstr "Il prossimo numero di serie disponibile è" msgid "Most recent serial number is" msgstr "Il numero di serie più recente è" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Nome articolo" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "È Template" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "Quest'articolo è un articolo di template?" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Questa parte è una variante di un altro articolo?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Variante Di" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Descrizione articolo" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Parole Chiave" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Categoria" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "IPN - Numero di riferimento interno" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "Numero Dell'articolo Interno" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Revisione" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "Fornitore predefinito" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "Articolo fornitore predefinito" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "Scadenza Predefinita" -#: part/models.py:941 +#: part/models.py:946 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:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Scorta Minima" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "Livello minimo di giacenza consentito" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "Unità di conservazione delle scorte per quest'articolo" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Quest'articolo può essere acquistato da fornitori esterni?" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Quest'articolo è attivo?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "È una parte virtuale, come un prodotto software o una licenza?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "Note dell'articolo - supporta la formattazione Markdown" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" -msgstr "BOM checksum" - -#: part/models.py:1000 -msgid "Stored BOM checksum" -msgstr "" - -#: part/models.py:1003 -msgid "BOM checked by" msgstr "" #: part/models.py:1005 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1008 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Codice Articolo" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "Percorso Categoria" msgid "Top level part category" msgstr "Categoria articolo di livello superiore" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sottocategorie" @@ -4745,23 +4842,23 @@ msgstr "Esporta" msgid "Export Data" msgstr "Esporta Dati" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "Parametri articolo" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "Crea Categoria Articolo" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "Crea Articolo" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "Assegnazione Ordine Di Vendita" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "Articoli correlati" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Distinta base" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Fornitori articoli" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Componenti Produttori" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "Articoli correlati" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "Elimina colonna" #: 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 "Duplica selezionati" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "Inattivo" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "In magazzino" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "Costo Totale" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "Ci sono %(count)s fornitori definiti per questo articolo. Se elimini que msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "Imposta categoria per i seguenti articoli" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "Nessuna giacenza" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "Database sconosciuto" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "Imposta categoria articolo" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "Imposta categoria per {n} articoli" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "Modifica Categoria Articoli" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "Elimina categoria" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "La Categoria articoli è stata eliminata" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "Crea Template Parametro Categoria" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "Modifica Modello Parametro Categoria" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "Elimina Modello Parametro Categoria" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "Data" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "Seriale" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "Data di Scadenza" @@ -5838,228 +5911,232 @@ msgstr "Conferma la disinstallazione" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "Seleziona Owner" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicazione magazzino" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "Installato In" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "Ultimo aggiornamento" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Nessuna posizione impostata" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "Sottoallocazioni" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Posizioni magazzino" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "Modifica Posizione Giacenza" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Crea una nuova Posizione di Giacenza" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "Elimina Posizione di Giacenza" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "Registrati" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" -msgstr "Admin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "Modifica Password" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "Password dimenticata?" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "Clicca qui per i dettagli di accesso" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "Quantità richiesta" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponibile" @@ -7642,10 +7715,6 @@ msgstr "Disponibile" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "Versione di InvenTree" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "Controlla gli elementi in magazzino nella posizione" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "Elemento in giacenza già in questa posizione" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "Controlla Nella Posizione" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "Il codice a barre non corrisponde a una posizione valida" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "Formato" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "Posizione non specificata" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "Modifica allocazione magazzino" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "Modifica Posizione" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "Rimuovi Posizione" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Seleziona Articoli" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "Specificare il quantitativo assegnato allo stock" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Conferma l'assegnazione della giacenza" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "Nessuna posizione di magazzino corrispondente" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "Aggiungi fornitore" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "Elimina il parametro" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "Elimina Parametri" @@ -8464,9 +8562,9 @@ msgstr "SÌ" #: templates/js/translated/helpers.js:22 msgid "NO" -msgstr "NO" +msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "ID azienda" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "ID Giacenza" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "ID Posizione" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "ID Ordine" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "Id Categoria" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "ID articolo produttore" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "Aggiungi cliente" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "Quantità da ricevere" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "Stato giacenza" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "Codice ordine" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "Ordinato" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "Totale" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "Prezzo Unitario" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "Prezzo Totale" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "Cliente non valido" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Conferma l'assegnazione della giacenza" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "Nessun ordine di vendita trovato" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "Modifica posizione giacenza" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "Conferma Operazione Eliminazione" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "Spedito al cliente" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "Nessun posizione specificata" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "Prezzo d'acquisto" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "Calcola il prezzo" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Attributi Articolo" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "Categoria articolo principale" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "Modifica l'articolo" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "Articolo modificato" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "Convalida la distinta dei materiali" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "In esaurimento" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "Parte tracciabile" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "Parte virtuale" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "Parte sottoscritta" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "Parte vendibile" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Nessuna variante trovata" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "Elimina relazione tra i componenti" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Nessun articolo trovato" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Nessuna categoria" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Visualizza come elenco" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Visualizza come griglia" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Visualizza come struttura ad albero" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "Categoria sottoscritta" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Percorso" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "Nessun modello di test corrispondente" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "Modificare il risultato del test" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "Cancellare il risultato del test" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "Modifica ${human_name}" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "Elimina ${human_name}" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "Prezzo Singolo" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "Posizione giacenza principale" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "Nuova posizione giacenza" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "Inserisci quantità iniziale per questo articolo in giacenza" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "Crea nuova allocazione magazzino" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "Creato più elementi stock" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "Trasferisci giacenza" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "Sposta" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "Conta giacenza" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "Conta" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "Rimuovi giacenza" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "Prendi" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "Aggiungi giacenza" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "Aggiungi" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "Elimina Stock" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "Specificare la quantità di magazzino" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "Devi selezionare almeno un articolo disponibile" -#: templates/js/translated/stock.js:1174 -msgid "PASS" -msgstr "PASS" - -#: templates/js/translated/stock.js:1176 -msgid "FAIL" -msgstr "FAIL" - #: templates/js/translated/stock.js:1181 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1183 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "NESSUN RISULTATO" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "Aggiungi risultato test" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "Nessun risultato di prova trovato" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "In produzione" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "Installato nell'elemento stock" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "Assegnato all'ordine di vendita" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Nessuna giacenza impostata" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "L'articolo di magazzino è in produzione" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "Articolo stock assegnato al cliente" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "L'articolo stock è scaduto" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "Articolo in giacenza prossimo alla scadenza" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "L'elemento stock è stato installato in un altro articolo" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "L'articolo stock è stato rifiutato" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Esaurito" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "Inventario" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "La posizione non esiste più" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "Aggiunto" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "Rimosso" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "Includi posizioni" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "Includi sottocategorie" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "Sottoscritto" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Codice Lotto" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "Elementi attivi" @@ -9691,68 +9827,88 @@ msgstr "Mostra elementi che sono stati assegnati a un cliente" msgid "Stock status" msgstr "Stato magazzino" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "Ha il prezzo d'acquisto" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "Mostra gli articoli di magazzino che hanno un prezzo di acquisto impostato" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "Mostra gli elementi in giacenza scaduti" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "Mostra giacenza prossima alla scadenza" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "Stato Build" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "Stato dell'ordine" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "In Sospeso" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "Includi articoli nelle sottocategorie" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "Ha IPN" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "L'articolo possiede un part number interno" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "Visualizza articoli attivi" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "Acquistabile" @@ -9792,7 +9948,7 @@ msgstr "di" msgid "rows" msgstr "righe" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "Colonne" msgid "All" msgstr "Tutti" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Acquista" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Vendi" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Esci" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Accedi" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "Informazioni Su InvenTree" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "Modalità demo InvenTree" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -9896,7 +10048,7 @@ msgstr "" #: templates/stats.html:9 msgid "Server" -msgstr "Server" +msgstr "" #: templates/stats.html:13 msgid "Instance Name" @@ -9904,7 +10056,7 @@ msgstr "Nome istanza" #: templates/stats.html:18 msgid "Database" -msgstr "Database" +msgstr "" #: templates/stats.html:26 msgid "Server is running in debug mode" @@ -9936,7 +10088,7 @@ msgstr "Stato del Server" #: templates/stats.html:55 msgid "Healthy" -msgstr "Healthy" +msgstr "" #: templates/stats.html:57 msgid "Issues detected" @@ -9952,7 +10104,7 @@ msgstr "Processo in background non in esecuzione" #: templates/stats.html:75 msgid "Email Settings" -msgstr "Email Settings" +msgstr "" #: templates/stats.html:78 msgid "Email settings not configured" @@ -10020,7 +10172,7 @@ msgstr "Si" #: templates/yesnolabel.html:6 msgid "No" -msgstr "No" +msgstr "" #: users/admin.py:64 msgid "Users" @@ -10046,35 +10198,35 @@ msgstr "Permessi" msgid "Important dates" msgstr "Date Importanti" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Impostazione autorizzazioni" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Gruppo" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Visualizza" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Autorizzazione a visualizzare gli articoli" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Autorizzazione ad aggiungere elementi" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Modificare" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Permessi per modificare gli elementi" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Autorizzazione ad eliminare gli elementi" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.mo b/InvenTree/locale/ja/LC_MESSAGES/django.mo deleted file mode 100644 index d9e09fe1ee..0000000000 Binary files a/InvenTree/locale/ja/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 9c5fda193c..41050ffebe 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -70,59 +69,68 @@ msgstr "カテゴリの選択" #: InvenTree/forms.py:236 msgid "Email (again)" -msgstr "" +msgstr "メールアドレス(確認用)" #: InvenTree/forms.py:240 msgid "Email address confirmation" -msgstr "" +msgstr "メールアドレスの確認" #: InvenTree/forms.py:260 msgid "You must type the same email each time." -msgstr "" +msgstr "毎回同じメールアドレスを入力する必要があります。" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" -msgstr "" +msgstr "重複したシリアル番号: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "数量コードが無効です" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "シリアル番号は空です" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "無効なグループ: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 #, python-brace-format -msgid "Invalid/no group {group}" +msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:530 +#, python-brace-format +msgid "Invalid/no group {group}" +msgstr "{group} は無効なグループか、存在しません。" + +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "シリアル番号が見つかりません" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" #: InvenTree/models.py:185 msgid "Missing file" -msgstr "" +msgstr "ファイルがありません" #: InvenTree/models.py:186 msgid "Missing external link" -msgstr "" +msgstr "外部リンクが見つかりません。" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "添付ファイル" @@ -132,17 +140,17 @@ msgid "Select file to attach" msgstr "添付ファイルを選択" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "" +msgstr "リンク" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" -msgstr "" +msgstr "外部 サイト へのリンク" #: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" @@ -152,12 +160,12 @@ msgstr "コメント:" msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "ユーザー" @@ -167,69 +175,69 @@ msgstr "アップロード日時" #: InvenTree/models.py:241 msgid "Filename must not be empty" -msgstr "" +msgstr "ファイル名は空欄にできません" #: InvenTree/models.py:264 msgid "Invalid attachment directory" -msgstr "" +msgstr "添付ファイルのディレクトリが正しくありません" #: InvenTree/models.py:274 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "" +msgstr "ファイル名に無効な文字'{c}'が含まれています" #: InvenTree/models.py:277 msgid "Filename missing extension" -msgstr "" +msgstr "ファイル名に拡張子がありません" #: InvenTree/models.py:284 msgid "Attachment with this filename already exists" -msgstr "" +msgstr "この名前の貼付ファイルは既に存在します" #: InvenTree/models.py:291 msgid "Error renaming file" -msgstr "" +msgstr "ファイル名の変更に失敗しました" #: InvenTree/models.py:326 msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "お名前" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "説明" @@ -241,143 +249,155 @@ msgstr "説明 (オプション)" msgid "parent" msgstr "親" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" #: InvenTree/serializers.py:299 msgid "Filename" -msgstr "" +msgstr "ファイル名" #: InvenTree/serializers.py:334 msgid "Invalid value" -msgstr "" +msgstr "無効な値です。" #: InvenTree/serializers.py:355 msgid "Data File" -msgstr "" +msgstr "データファイル" #: InvenTree/serializers.py:356 msgid "Select data file for upload" -msgstr "" +msgstr "アップロードするファイルを選択" #: InvenTree/serializers.py:380 msgid "Unsupported file type" -msgstr "" +msgstr "サポートされていないファイル形式" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "" +msgstr "ファイルサイズが大きすぎます" #: InvenTree/serializers.py:407 msgid "No columns found in file" -msgstr "" +msgstr "ファイルに列が見つかりません" #: InvenTree/serializers.py:410 msgid "No data rows found in file" -msgstr "" +msgstr "ファイルにデータ行がみつかりません" #: InvenTree/serializers.py:533 msgid "No data rows provided" -msgstr "" +msgstr "データが入力されていません" #: InvenTree/serializers.py:536 msgid "No data columns supplied" -msgstr "" +msgstr "データ列が指定されていません" #: InvenTree/serializers.py:623 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "必須の列がありません: {name}" #: InvenTree/serializers.py:632 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "" - -#: InvenTree/settings.py:665 -msgid "German" -msgstr "ドイツ語" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "英語" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "フランス語" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" +msgstr "{col} 列が重複しています。" #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" -msgstr "" +msgid "German" +msgstr "ドイツ語" #: InvenTree/settings.py:674 -msgid "Japanese" -msgstr "" +msgid "Greek" +msgstr "ギリシャ語" #: InvenTree/settings.py:675 -msgid "Korean" -msgstr "" +msgid "English" +msgstr "英語" #: InvenTree/settings.py:676 -msgid "Dutch" -msgstr "" +msgid "Spanish" +msgstr "スペイン語" #: InvenTree/settings.py:677 -msgid "Norwegian" -msgstr "" +msgid "Spanish (Mexican)" +msgstr "スペイン語(メキシコ)" #: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 +msgid "French" +msgstr "フランス語" + +#: InvenTree/settings.py:680 +msgid "Hebrew" +msgstr "ヘブライ語" + +#: InvenTree/settings.py:681 +msgid "Hungarian" +msgstr "ハンガリー語" + +#: InvenTree/settings.py:682 +msgid "Italian" +msgstr "イタリア語" + +#: InvenTree/settings.py:683 +msgid "Japanese" +msgstr "日本語" + +#: InvenTree/settings.py:684 +msgid "Korean" +msgstr "韓国語" + +#: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "オランダ語" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "ノルウェー語" + +#: InvenTree/settings.py:687 msgid "Polish" msgstr "ポーランド語" -#: InvenTree/settings.py:679 -msgid "Portugese" +#: InvenTree/settings.py:688 +msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" -msgstr "" +msgstr "ロシア語" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" -msgstr "" +msgstr "スウェーデン語" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" -msgstr "" +msgstr "タイ語" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "トルコ語" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" -msgstr "" +msgstr "ベトナム語" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" -msgstr "" +msgstr "中国語" #: InvenTree/status.py:110 msgid "Background worker check failed" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InvenTree システムのヘルスチェックに失敗しました" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "処理待ち" @@ -400,14 +420,14 @@ msgstr "処理待ち" msgid "Placed" msgstr "設置済" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "完了" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "キャンセル済" @@ -421,14 +441,14 @@ msgstr "紛失" msgid "Returned" msgstr "返品済" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "発送済み" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -440,99 +460,103 @@ msgstr "破損" #: InvenTree/status_codes.py:186 msgid "Destroyed" -msgstr "" +msgstr "破壊されました" #: InvenTree/status_codes.py:188 msgid "Rejected" msgstr "却下済み" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 -msgid "Stock item created" -msgstr "" - -#: InvenTree/status_codes.py:277 -msgid "Edited stock item" -msgstr "" - #: InvenTree/status_codes.py:278 -msgid "Assigned serial number" -msgstr "" +msgid "Stock item created" +msgstr "在庫商品を作成しました" #: InvenTree/status_codes.py:280 -msgid "Stock counted" -msgstr "" +msgid "Edited stock item" +msgstr "在庫商品編集済み" #: InvenTree/status_codes.py:281 -msgid "Stock manually added" -msgstr "" +msgid "Assigned serial number" +msgstr "割り当てられたシリアル番号" -#: InvenTree/status_codes.py:282 -msgid "Stock manually removed" -msgstr "" +#: InvenTree/status_codes.py:283 +msgid "Stock counted" +msgstr "在庫数" #: InvenTree/status_codes.py:284 -msgid "Location changed" -msgstr "" +msgid "Stock manually added" +msgstr "手動在庫追加が完了しました" -#: InvenTree/status_codes.py:286 -msgid "Installed into assembly" -msgstr "" +#: InvenTree/status_codes.py:285 +msgid "Stock manually removed" +msgstr "手動在庫削除が完了しました" #: InvenTree/status_codes.py:287 -msgid "Removed from assembly" -msgstr "" +msgid "Location changed" +msgstr "ロケーションが変更されました" #: InvenTree/status_codes.py:289 -msgid "Installed component item" -msgstr "" +msgid "Installed into assembly" +msgstr "アセンブリへインストールしました" #: InvenTree/status_codes.py:290 -msgid "Removed component item" -msgstr "" +msgid "Removed from assembly" +msgstr "アセンブリから削除しました" #: InvenTree/status_codes.py:292 -msgid "Split from parent item" -msgstr "" +msgid "Installed component item" +msgstr "インストール済みのコンポーネント項目" #: InvenTree/status_codes.py:293 +msgid "Removed component item" +msgstr "コンポーネント項目を削除しました" + +#: InvenTree/status_codes.py:295 +msgid "Split from parent item" +msgstr "親アイテムから分割する" + +#: InvenTree/status_codes.py:296 msgid "Split child item" -msgstr "" +msgstr "子項目を分割" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" -msgstr "" - -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 -msgid "Sent to customer" -msgstr "" - -#: InvenTree/status_codes.py:298 -msgid "Returned from customer" -msgstr "" +msgstr "商品在庫をマージしました" #: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 +msgid "Sent to customer" +msgstr "顧客に送信されました" + +#: InvenTree/status_codes.py:303 +msgid "Returned from customer" +msgstr "顧客からの返品" + +#: InvenTree/status_codes.py:305 msgid "Build order output created" -msgstr "" +msgstr "組立注文の出力が作成されました" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" -msgstr "" +msgstr "組立注文の出力が完了しました" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" -msgstr "" +msgstr "生産" #: InvenTree/validators.py:25 msgid "Not a valid currency code" @@ -556,7 +580,7 @@ msgstr "" #: InvenTree/validators.py:116 #, python-brace-format msgid "Illegal character in name ({x})" -msgstr "" +msgstr "名前の一部に不正な文字が使用されています({x})" #: InvenTree/validators.py:137 InvenTree/validators.py:153 msgid "Overage value must not be negative" @@ -570,29 +594,29 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" -msgstr "" +msgstr "項目を削除" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" -msgstr "" +msgstr "ユーザー情報を編集" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" -msgstr "" +msgstr "パスワードを設定" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" -msgstr "" +msgstr "システム情報" #: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "パーツ" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" -msgstr "" +msgstr "作成日時" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,31 +854,32 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" -msgstr "" +msgstr "メモ" #: build/models.py:337 msgid "Extra build notes" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "パーツを割り当てるためにビルドする" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" -msgstr "" +msgstr "数量" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" +msgstr "ステータス" + +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1532,7 +1583,7 @@ msgstr "" #: common/forms.py:34 msgid "File" -msgstr "" +msgstr "ファイル" #: common/forms.py:35 msgid "Select file to upload" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "テンプレート" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "アセンブリ" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "コンポーネント" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "追跡可能" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" -msgstr "" +msgstr "デバッグモード" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" -msgstr "" +msgstr "メッセージ ID:" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "メーカー・パーツ" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "新しいサプライヤー・パーツを作成" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "新しいサプライヤー・パーツ" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "メーカー・パーツ" msgid "Create new manufacturer part" msgstr "新しいメーカー・パーツを作成" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "新しいメーカ―・パーツ" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "パーツの注文" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "メーカー・パーツの編集" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "メーカー・パーツを削除" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "内部パーツ" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "パーツ" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "メーカー・パーツの編集" msgid "Delete Manufacturer Part" msgstr "メーカー・パーツを削除" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.mo b/InvenTree/locale/ko/LC_MESSAGES/django.mo deleted file mode 100644 index 84270c1185..0000000000 Binary files a/InvenTree/locale/ko/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 411f9f4428..a4741e3bd4 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: ko\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "이메일 주소 확인" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "첨부파일" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "첨부할 파일을 선택하세요" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "링크" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "외부 URL로 링크" @@ -152,12 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "사용자" @@ -194,42 +202,42 @@ msgstr "파일 이름 바꾸기 오류" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "이름" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "설명" @@ -241,7 +249,7 @@ msgstr "설명 (선택 사항)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" @@ -267,7 +275,7 @@ msgstr "" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "" +msgstr "파일이 너무 큽니다" #: InvenTree/serializers.py:407 msgid "No columns found in file" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "체코어" + +#: InvenTree/settings.py:673 msgid "German" msgstr "독일어" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "그리스어" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "영어" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "스페인어" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "스페인어 (멕시코)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "파르시어/페르시아어" + +#: InvenTree/settings.py:679 msgid "French" msgstr "프랑스어" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "히브리어" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" -msgstr "" +msgstr "헝가리어" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "이탈리아어" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "일본어" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "한국어" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "네덜란드어" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "노르웨이어" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "폴란드어" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "포르투갈어" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "러시아어" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "스웨덴어" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "태국어" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "터키어" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "베트남어" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "중국어" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "취소됨" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "파괴됨" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "사용자 정보 수정" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" -msgstr "" +msgstr "비밀번호 설정" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" -msgstr "" +msgstr "비밀번호가 일치해야 합니다" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "시스템 정보" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "외부 링크" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "수량" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "일련번호" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "위치" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "상태" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "재시작 필요" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "회사명" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "회사명" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "기본 통화" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "기본 통화" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "URL에서 다운로드" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "바코드 지원" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "구입 가능" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "판매 가능" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "디버그 모드" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "페이지 크기" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "PDF 보고서 기본 페이지 크기" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "SSO 활성화" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "로그인 페이지에서 SSO 활성화" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "이메일 필요" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "두 번 보내기" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "파일 업로드" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "이미지" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "회사" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "새 이미지 업로드" msgid "Download image from URL" msgstr "URL에서 이미지 다운로드" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "고객" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "전화번호" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "이미지 업로드" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "삭제" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "새 회사" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "이미지 다운로드" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "높이 [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "바코드 해시" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "이미 사용 중인 바코드입니다" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "데이터" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "부품 명세서" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "일련번호 검색" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "일련번호" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "일련번호가 이미 존재합니다" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "페이지를 찾을 수 없습니다." -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "내부 서버 오류" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "메시지" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "설정" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "관리자" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "작성자" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "버전" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7109,9 +7190,9 @@ msgstr "" #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "" +msgstr "비밀번호 변경" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7485,7 +7558,7 @@ msgstr "" #: templates/account/password_reset.html:27 templates/account/signup.html:36 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "이 기능은 활성화되지 않았습니다. 관리자에게 연락하세요." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "InvenTree 버전" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "바코드" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "서버 오류" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "선택" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "예" msgid "NO" msgstr "아니오" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "단가" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "부품 명세서 복사" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "일련번호 찾기" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "일치하는 일련번호가 없습니다" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "일련번호" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.mo b/InvenTree/locale/nl/LC_MESSAGES/django.mo deleted file mode 100644 index 90bb7bf5b8..0000000000 Binary files a/InvenTree/locale/nl/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index a85dc27250..38d10a3697 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "E-mailadres bevestiging" msgid "You must type the same email each time." msgstr "Er moet hetzelfde e-mailadres ingevoerd worden." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" -msgstr "" +msgstr "Duplicaat serienummer: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Ongeldige hoeveeldheid ingevoerd" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Leeg serienummer" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ongeldige groep: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 #, python-brace-format -msgid "Invalid/no group {group}" +msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:530 +#, python-brace-format +msgid "Invalid/no group {group}" +msgstr "Ongeldige/geen groep {group}" + +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Geen serienummers gevonden" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Aantal unieke serienummer ({s}) moet overeenkomen met de hoeveelheid ({q})" @@ -122,7 +130,7 @@ msgstr "Ontbrekend bestand" msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Bijlage" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" -msgstr "Link" +msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Link naar externe URL" @@ -152,12 +160,12 @@ msgstr "Opmerking" msgid "File comment" msgstr "Bijlage opmerking" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Gebruiker" @@ -194,42 +202,42 @@ msgstr "Fout bij hernoemen bestand" msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Naam" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Omschrijving" @@ -241,7 +249,7 @@ msgstr "Omschrijving (optioneel)" msgid "parent" msgstr "overkoepelend" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" @@ -251,131 +259,143 @@ msgstr "Bestandsnaam" #: InvenTree/serializers.py:334 msgid "Invalid value" -msgstr "" +msgstr "Ongeldige waarde" #: InvenTree/serializers.py:355 msgid "Data File" -msgstr "" +msgstr "Data bestand" #: InvenTree/serializers.py:356 msgid "Select data file for upload" -msgstr "" +msgstr "Selecteer een bestand om te uploaden" #: InvenTree/serializers.py:380 msgid "Unsupported file type" -msgstr "" +msgstr "Niet ondersteund bestandstype" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "" +msgstr "Bestand is te groot" #: InvenTree/serializers.py:407 msgid "No columns found in file" -msgstr "" +msgstr "Geen kolommen gevonden in het bestand" #: InvenTree/serializers.py:410 msgid "No data rows found in file" -msgstr "" +msgstr "Geen data rijen gevonden in dit bestand" #: InvenTree/serializers.py:533 msgid "No data rows provided" -msgstr "" +msgstr "Geen data rijen opgegeven" #: InvenTree/serializers.py:536 msgid "No data columns supplied" -msgstr "" +msgstr "Geen gegevenskolommen opgegeven" #: InvenTree/serializers.py:623 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "Verplichte kolom ontbreekt: '{name}'" #: InvenTree/serializers.py:632 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "" - -#: InvenTree/settings.py:665 -msgid "German" -msgstr "Duits" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "Grieks" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "Engels" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "Spaans" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "Spaans (Mexicaans)" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "Frans" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "Hebreeuws" +msgstr "Dubbele kolom: '{col}'" #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 +msgid "German" +msgstr "Duits" + +#: InvenTree/settings.py:674 +msgid "Greek" +msgstr "Grieks" + +#: InvenTree/settings.py:675 +msgid "English" +msgstr "Engels" + +#: InvenTree/settings.py:676 +msgid "Spanish" +msgstr "Spaans" + +#: InvenTree/settings.py:677 +msgid "Spanish (Mexican)" +msgstr "Spaans (Mexicaans)" + +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 +msgid "French" +msgstr "Frans" + +#: InvenTree/settings.py:680 +msgid "Hebrew" +msgstr "Hebreeuws" + +#: InvenTree/settings.py:681 +msgid "Hungarian" +msgstr "Hongaars" + +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Italiaans" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japans" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreaans" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Nederlands" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Noors" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Pools" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugees" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Zweeds" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Thais" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Turks" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamees" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Chinees" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "Inventree gezondsheidscheck faalt" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Bezig" @@ -400,14 +420,14 @@ msgstr "Bezig" msgid "Placed" msgstr "Geplaatst" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Voltooid" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Geannuleerd" @@ -421,14 +441,14 @@ msgstr "Kwijt" msgid "Returned" msgstr "Retour" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Verzonden" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Verwoest" msgid "Rejected" msgstr "Afgewezen" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Verouderde trackingscode" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Voorraaditem gemaakt" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Bewerken voorraaditem" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Serienummer toegewezen" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Voorraad geteld" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Voorraad handmatig toegevoegd" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Voorraad handmatig verwijderd" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Locatie veranderd" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Gemonteerd" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Gedemonteerd" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Gemonteerd item" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Gedemonteerd item" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Splits van bovenliggend item" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Splits onderliggende item" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" +msgstr "Samengevoegde stock items" + +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Naar klant verzonden" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Geretourneerd door klant" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Product aangemaakt" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Product voltooid" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" -msgstr "" +msgstr "Verbruikt door bouwopdracht" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Ontvangen tegen inkoopopdracht" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Productie" @@ -564,33 +588,33 @@ msgstr "Overschrijdingswaarde mag niet negatief zijn" #: InvenTree/validators.py:155 msgid "Overage must not exceed 100%" -msgstr "" +msgstr "Dekking mag niet groter zijn dan 100%" #: InvenTree/validators.py:162 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Verwijder item" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Selectievakje aanvinken om de verwijdering van items te bevestigen" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Gebruikersgegevens bewerken" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Wachtwoord instellen" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Wachtwoordvelden komen niet overeen" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Systeeminformatie" @@ -620,11 +644,11 @@ msgstr "" #: barcodes/api.py:201 msgid "Barcode already matches Stock Location" -msgstr "" +msgstr "Barcode komt al overeen met vooraad locatie" #: barcodes/api.py:205 msgid "Barcode already matches Part" -msgstr "" +msgstr "Barcode komt al overeen met onderdeel" #: barcodes/api.py:211 barcodes/api.py:223 msgid "Barcode hash already matches Stock Item" @@ -649,15 +673,15 @@ msgstr "Ongeldige keuze voor bovenliggende build" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Productie-opdracht" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Productie-opdrachten" msgid "Build Order Reference" msgstr "Productie-opdracht referentie" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Referentie" @@ -692,33 +717,34 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Onderdeel" @@ -734,8 +760,8 @@ msgstr "Verkooporder referentie" msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar dit product aan is toegewezen" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Bron Locatie" @@ -775,21 +801,21 @@ msgstr "Bouwstatus" msgid "Build status code" msgstr "Bouwstatuscode" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Aanmaakdatum" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Verwachte opleveringsdatum" @@ -797,8 +823,8 @@ msgstr "Verwachte opleveringsdatum" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Opleveringsdatum" @@ -806,20 +832,20 @@ msgstr "Opleveringsdatum" msgid "completed by" msgstr "voltooid door" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" -msgstr "" +msgstr "Uitgegeven door" #: build/models.py:317 msgid "User who issued this build order" msgstr "Gebruiker die de productie-opdracht heeft gegeven" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Verantwoordelijke" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Externe Link" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Opmerkingen" @@ -870,73 +897,73 @@ msgstr "Bouwuitvoer is al voltooid" msgid "Build output does not match Build Order" msgstr "Product komt niet overeen met de productie-opdracht" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" -msgstr "" +msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" -msgstr "" +msgstr "Voorraad item is te veel toegewezen" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" -msgstr "" +msgstr "Toewijzingsaantal moet groter zijn dan nul" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" -msgstr "" +msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" -msgstr "" +msgstr "Geselecteerd voorraadartikel niet gevonden in stuklijst" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Product" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Bouw om onderdelen toe te wijzen" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Voorraadartikel" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Bron voorraadartikel" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Bron voorraadartikel" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Aantal" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid te alloceren aan bouw" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Voer hoeveelheid in voor build-output" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Serienummers" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Voer serienummers in voor build-outputs" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Locatie" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" -msgstr "Status" +msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Streefdatum" @@ -1251,28 +1291,28 @@ msgstr "Deze bouw was verwacht op %(target)s" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "Achterstallig" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Voltooid" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Verkooporder" @@ -1311,8 +1351,8 @@ msgstr "Voorraadbron" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Bestemming" @@ -1320,22 +1360,25 @@ msgstr "Bestemming" msgid "Destination location not specified" msgstr "Bestemmingslocatie niet opgegeven" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "Toegewezen onderdelen" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" -msgstr "Batch" +msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Gecreëerd" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Voorraad toewijzen aan Product" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Niet toegewezen voorraad" @@ -1448,33 +1491,41 @@ msgstr "Afdrukacties" msgid "Print labels" msgstr "Labels afdrukken" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Bijlagen" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Bouw notities" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "Waarde van de instelling" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "Inventree Instantie Naam" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "String-beschrijving voor de server instantie" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Basis URL" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Standaard valuta" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Standaard valuta" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:721 +#: common/models.py:746 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:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Barcode ondersteuning" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Barcodescanner ondersteuning inschakelen" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" -msgstr "IPN Regex" - -#: common/models.py:735 -msgid "Regular expression pattern for matching Part IPN" -msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN" - -#: common/models.py:739 -msgid "Allow Duplicate IPN" -msgstr "Dubbele IPN toestaan" - -#: common/models.py:740 -msgid "Allow multiple parts to share the same IPN" -msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" - -#: common/models.py:746 -msgid "Allow Editing IPN" -msgstr "Bewerken IPN toestaan" - -#: common/models.py:747 -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:753 -msgid "Copy Part BOM Data" -msgstr "" - -#: common/models.py:754 -msgid "Copy BOM data by default when duplicating a part" msgstr "" #: common/models.py:760 +msgid "Regular expression pattern for matching Part IPN" +msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN" + +#: common/models.py:764 +msgid "Allow Duplicate IPN" +msgstr "Dubbele IPN toestaan" + +#: common/models.py:765 +msgid "Allow multiple parts to share the same IPN" +msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" + +#: common/models.py:771 +msgid "Allow Editing IPN" +msgstr "Bewerken IPN toestaan" + +#: common/models.py:772 +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:778 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:779 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" -msgstr "" +msgstr "Koopbaar" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" -msgstr "" +msgstr "Onderdelen kunnen standaard gekocht worden" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" -msgstr "" +msgstr "Verkoopbaar" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" -msgstr "" +msgstr "Onderdelen kunnen standaard verkocht worden" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" -msgstr "" +msgstr "Volgbaar" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" -msgstr "" +msgstr "Onderdelen kunnen standaard gevolgd worden" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" -msgstr "" +msgstr "Virtueel" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" -msgstr "" +msgstr "Onderdelen zijn standaard virtueel" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" -msgstr "" +msgstr "Toon Import in weergaven" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" -msgstr "" +msgstr "Toon Prijs in Formulieren" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" -msgstr "" +msgstr "Toon onderdeel prijs in sommige formulieren" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" -msgstr "" +msgstr "Toon prijsgeschiedenis" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" -msgstr "" +msgstr "Toon historische prijzen voor onderdeel" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" -msgstr "" +msgstr "Verwante onderdelen tonen" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" -msgstr "" +msgstr "Verwante onderdelen voor een onderdeel tonen" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" -msgstr "" +msgstr "Eerste voorraad aanmaken" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" -msgstr "" +msgstr "Aanmaken eerste voorraad bij het maken van onderdeel" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Interne prijzen" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" -msgstr "" +msgstr "Activeer rapporteringen" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" -msgstr "" +msgstr "Activeer het genereren van rapporten" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" -msgstr "" +msgstr "Rapporten genereren in debug modus (HTML uitvoer)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" -msgstr "" +msgstr "Standaard paginagrootte voor PDF rapporten" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Testrapport" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" +msgstr "Activeer het genereren van testrapporten" + +#: common/models.py:961 +msgid "Batch Code Template" msgstr "" -#: common/models.py:936 +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "Verlopen voorraad" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "Verkoop verlopen voorraad" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "dagen" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2538,7 +2600,7 @@ msgstr "" #: company/models.py:125 msgid "Contact email address" -msgstr "" +msgstr "Contact e-mailadres" #: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" @@ -2550,11 +2612,11 @@ msgstr "" #: company/models.py:131 msgid "Link to external company information" -msgstr "" +msgstr "Link naar externe bedrijfsinformatie" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" -msgstr "" +msgstr "Afbeelding" #: company/models.py:144 msgid "is customer" @@ -2566,7 +2628,7 @@ msgstr "" #: company/models.py:146 msgid "is supplier" -msgstr "" +msgstr "is leverancier" #: company/models.py:146 msgid "Do you purchase items from this company?" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Fabriceert dit bedrijf onderdelen?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Fabrikant" @@ -2613,13 +2676,13 @@ msgstr "Fabrikant" msgid "Select manufacturer" msgstr "Fabrikant selecteren" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "Omschrijving onderdeel fabrikant" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Fabrikant onderdeel" @@ -2646,21 +2709,21 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" -msgstr "" +msgstr "Waarde" #: company/models.py:423 msgid "Parameter value" -msgstr "" +msgstr "Parameterwaarde" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" -msgstr "" +msgstr "Eenheden" #: company/models.py:430 msgid "Parameter units" @@ -2671,24 +2734,24 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" -msgstr "" +msgstr "Leverancier" #: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" -msgstr "" +msgstr "Leverancier selecteren" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" -msgstr "" +msgstr "Opmerking" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" -msgstr "" +msgstr "basisprijs" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" -msgstr "" +msgstr "Minimale kosten (bijv. voorraadkosten)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "Fabrikant onderdelen" msgid "Create new manufacturer part" msgstr "Maak nieuw fabrikant onderdeel" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Nieuw fabrikant onderdeel" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabrikanten" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "Fabrikant onderdeel bewerken" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "Fabrikant onderdeel verwijderen" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Nieuwe fabrikant" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Standaard locatie" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "Toewijzingen verkoopopdracht" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "Nieuw stuklijstitem" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "Samenstellingen" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "Productie-opdracht toewijzingen" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Fabrikanten" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "Fabrikant onderdeel verwijderen" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Serienummer" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Voorraadlocatie" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Geen Locatie ingesteld" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "Sublocaties" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Voorraadlocaties" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "Bewerk voorraadlocatie" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Maak nieuwe voorraadlocatie" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "Verwijder voorraadlocatie" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Beschikbaar" @@ -7642,10 +7715,6 @@ msgstr "Beschikbaar" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "Je ontvangt deze e-mail omdat je bent geabonneerd op notificaties van dit onderdeel " -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "Locatie is niet opgegeven" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "Voorraadtoewijzing bewerken" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "Voorraadtoewijzing verwijderen" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "Toegewezen" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "Voorraad toewijzen" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Onderdelen selecteren" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "Er moet op zijn minst één onderdeel toegewezen worden" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Bevestig de voorraadtoewijzing" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "Fabrikant onderdeel bewerken" msgid "Delete Manufacturer Part" msgstr "Fabrikant onderdeel verwijderen" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "Geen fabricage onderdelen gevonden" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "Samengesteld onderdeel" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "Onderdeelnummer fabrikant" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Bevestig de voorraadtoewijzing" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Geen voorraadlocatie ingesteld" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Inkoop" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Verkoop" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.mo b/InvenTree/locale/no/LC_MESSAGES/django.mo deleted file mode 100644 index f4261a805f..0000000000 Binary files a/InvenTree/locale/no/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index 1dade9d56e..28ee737304 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: no\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Bekreftelsen på e-postaddresse" msgid "You must type the same email each time." msgstr "Du må angi samme e-post hver gang." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" -msgstr "" +msgstr "Dupliser serie: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Ugyldig mengde oppgitt" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Tom serienummerstreng" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ugyldig gruppe: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Ugyldig/ingen gruppe {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Ingen serienummer funnet" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Antall unike serienummer ({s}) må samsvare mengde ({q})" @@ -122,7 +130,7 @@ msgstr "Fil mangler" msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Vedlegg" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Velg fil å legge ved" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "Lenke" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Lenke til ekstern URL" @@ -152,12 +160,12 @@ msgstr "Kommenter" msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Bruker" @@ -194,42 +202,42 @@ msgstr "Feil ved endring av navn" msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Navn" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Beskrivelse" @@ -241,7 +249,7 @@ msgstr "Beskrivelse (valgfritt)" msgid "parent" msgstr "overkategori" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Nummer må være gyldig" @@ -251,131 +259,143 @@ msgstr "Filnavn" #: InvenTree/serializers.py:334 msgid "Invalid value" -msgstr "" +msgstr "Ugyldig verdi" #: InvenTree/serializers.py:355 msgid "Data File" -msgstr "" +msgstr "Data fil" #: InvenTree/serializers.py:356 msgid "Select data file for upload" -msgstr "" +msgstr "Velg datafil for opplasting" #: InvenTree/serializers.py:380 msgid "Unsupported file type" -msgstr "" +msgstr "Filtypen støttes ikke" #: InvenTree/serializers.py:386 msgid "File is too large" -msgstr "" +msgstr "Filen er for stor" #: InvenTree/serializers.py:407 msgid "No columns found in file" -msgstr "" +msgstr "Ingen kolonner funnet i filen" #: InvenTree/serializers.py:410 msgid "No data rows found in file" -msgstr "" +msgstr "Ingen datalader funnet i fil" #: InvenTree/serializers.py:533 msgid "No data rows provided" -msgstr "" +msgstr "Ingen datalader oppgitt" #: InvenTree/serializers.py:536 msgid "No data columns supplied" -msgstr "" +msgstr "Ingen datakolonner angitt" #: InvenTree/serializers.py:623 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "Mangler påkrevd kolonne: '{name}'" #: InvenTree/serializers.py:632 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "" +msgstr "Dupliser kolonne: '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "Tsjekkisk" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Tysk" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Gresk" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Engelsk" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Spansk" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Spansk (Meksikansk)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "Farsi / Persisk" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Fransk" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" -msgstr "" +msgstr "Ungarsk" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Italiensk" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japansk" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreansk" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Nederlandsk" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polsk" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugesisk" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "Portugisisk" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisk (Brasilian)" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Russisk" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Svensk" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Kinesisk" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "Helsekontroll av IvenTree system mislyktes" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Ventende" @@ -400,14 +420,14 @@ msgstr "Ventende" msgid "Placed" msgstr "Plassert" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Fullført" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Kansellert" @@ -421,14 +441,14 @@ msgstr "Tapt" msgid "Returned" msgstr "Returnert" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Sendt" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Ødelagt" msgid "Rejected" msgstr "Avvist" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Legacy stock sporingsoppføring" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Lagevare opprettet" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Redigerte lagervare" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Tildelt serienummer" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Lager tellet" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Lager manuelt lagt til" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Lager manuelt fjernet" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Posisjon endret" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Installert i montering" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Fjernet fra montering" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Installert komponentelement" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Fjernet komponentelement" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Delt fra overordnet element" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Delt fra underelement" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Sammenslått lagervare" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "Konvertert til variant" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Sendt til kunde" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Returnert av kunde" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Build ordreutgang opprettet" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Build ordreutg fullført" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Mottatt mot innkjøpsordre" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Produksjon" @@ -570,27 +594,27 @@ msgstr "Overde må ikke overstige 100%" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Slett element" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Kryss av i boksen for å bekrefte sletting av element" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Rediger brukerinformasjon" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Velg passord" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Passordfeltene må samsvare" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Systeminformasjon" @@ -649,15 +673,15 @@ msgstr "Ugylding valg for overordnet build" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Build ordre" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Build Ordre" msgid "Build Order Reference" msgstr "Bygg ordrereferanse" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Referanse" @@ -692,33 +717,34 @@ msgstr "Build order som denne build er tildelt til" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Del" @@ -734,8 +760,8 @@ msgstr "Salg order referanse" msgid "SalesOrder to which this build is allocated" msgstr "Salgorder som denne build er tildelt til" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Kilde plassering" @@ -775,21 +801,21 @@ msgstr "Byggstatus" msgid "Build status code" msgstr "Byggstatuskode" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Batch kode" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Batch kode for denne build output" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Opprettelsesdato" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Forventet sluttdato" @@ -797,8 +823,8 @@ msgstr "Forventet sluttdato" msgid "Target date for build completion. Build will be overdue after this date." msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen." -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Fullført dato" @@ -806,7 +832,7 @@ msgstr "Fullført dato" msgid "completed by" msgstr "fullført av" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Utstedt av" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Brukeren som utstede denne prosjekt order" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Ansvarlig" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Bruker ansvarlig for denne prosjekt order" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Ekstern link" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Notater" @@ -870,73 +897,73 @@ msgstr "Prosjekt utdata er allerede utfylt" msgid "Build output does not match Build Order" msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelige lager mengde ({a})" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "Lagervare er overtildelt" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Tildeling antallet må være større enn null" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "Mengden må væew 1 for serialisert lagervare" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "Valgt lagevare ikke funnet i BOM" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Prosjekt" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Bygge for å tildele deler" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Lagervare" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Kilde lagervare" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Kilde lagervare" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Antall" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Installerings informasjon" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Målets lagervare" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Angi antall for build utgang" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Angi serienummer for bygge-utganger" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Beliggenhet" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" -msgstr "Status" +msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "Påkrevd varer er ikke fullt tildelt" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "BOM varer" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "Varen må være på lager" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Tilgjengelig mengde ({q}) overskredet" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Måldato" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Fullført" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Salgsorder" @@ -1311,8 +1351,8 @@ msgstr "Lager kilde" msgid "Stock can be taken from any available location." msgstr "Lagervare kan hentes fra alle tilgengelige steder." -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Destinasjon" @@ -1320,22 +1360,25 @@ msgstr "Destinasjon" msgid "Destination location not specified" msgstr "Målplassering er ikke spesifisert" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "Tildelte deler" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Opprettet" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Fjern lager allokering" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Vedlegg" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "Alle usporbar lagervarer har tildelt" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstav msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Omstart påkrevd" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "En innstilling har blitt endrett som krever en serveromstart" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "Firmanavn" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "Internt firmanavn" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "Firmanavn" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "Internt firmanavn" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Standardvaluta" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Last ned fra URL" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "Tilat nedlastning av eksterne bilder og filer fra ekstern URL" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Strekkode støtte" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Aktiver skrekkodeleser støtte" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Tilat duplisert IPN" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme IPN" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "Tillat redigering av IPN" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat å endre IPN-verdien mens du redigerer en del" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "Kopier kategori parametermaler ved oppretting av en del" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Mal" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Montering" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Komponent" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Salgbar" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Sporbar" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Vis pris i skjemaer" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "Vis delpris i noen skjemaer" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "Salgsorder referanse prefiks" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "Prefiks verdi for salgsorder referanse" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "Salgsorder referanse prefiks" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "Prefiks verdi for salgsorder referanse" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "Krevt at brukeren angi e-post ved registrering" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO brukere" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "Ved registrering spør brukere to ganger for e-posten" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "Ved registrerting, spør brukere to ganger for passord" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "Aktiver URL integrering" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrering" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "Aktiver app integrasjon" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "Vis abbonerte deler" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "Vis abbonerte deler på hjemmesiden" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Vis abbonerte kategorier" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "Vis abbonerte delkatekorier på hjemmesiden" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på hjemmesiden" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "Antall nylig deler" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "Vis uvaliderte BOMs" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "Vis BOMs som venter validering på hjemmesiden" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endret lagervarer på hjemmesiden" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "Siste lagertelling" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "Antall nylige lagervarer som skal vises på indeksside" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "Vis lav lager" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "Vis lav lagervarer på hjemmesiden" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "Vis tom lagervarer" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Aktiv" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "Sjetong" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "Vert" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "Tittel" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "Brødtekst" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Last opp fil" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Sammelign felter" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Deler importert" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Forrige trinn" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "Link til ekstern bedriftsinformasjon" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Bilde" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Produserer dette firmaet deler?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Valuta" @@ -2589,7 +2652,7 @@ msgstr "Valuta" msgid "Default currency used for this company" msgstr "Standardvaluta brukt for dette firmaet" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "Last ned bilde fra URL" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Kunde" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Telefon" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Last opp bilde" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Oprett ny leverandørdel" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Ny leverandørdel" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Valgmuligheter" @@ -2869,7 +2932,7 @@ msgstr "Produsentdeler" msgid "Create new manufacturer part" msgstr "Opprett ny produsentdeler" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Ny produsentdel" @@ -2883,10 +2946,10 @@ msgstr "Leverandør lager" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Bestillingsorder" @@ -2906,10 +2969,10 @@ msgstr "Ny bestillingsorder" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Salgsordre" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Ny salgsorder" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "Tildelt lagervare" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "Notater til firma" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Slett leverandørdeler?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Alle valgte leverandørdeler vil slettes" @@ -2949,83 +3012,83 @@ msgstr "Alle valgte leverandørdeler vil slettes" msgid "Supplier List" msgstr "Leverandørliste" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Produsenter" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Bestill del" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "Endre produsent del" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "Slett produsentdel" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Intern del" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Leverandører" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Slett leverandørdeler" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Slett" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "Tildelt lagervarer" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "Spørrefilter (kommaseparert liste over nøkkel=verdiparer)," #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filtre" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Seriernummer eksisterer allerede" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.mo b/InvenTree/locale/pl/LC_MESSAGES/django.mo deleted file mode 100644 index b76b641e43..0000000000 Binary files a/InvenTree/locale/pl/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 17bfffdd6f..2b9c2c6f6d 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Potwierdzenie adresu email" msgid "You must type the same email each time." msgstr "Należy ponownie wpisać ten sam adres e-mail." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Powtórzony numer seryjny: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Podano nieprawidłową ilość" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Pusty ciąg numeru seryjnego" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Nieprawidłowa grupa: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Nieprawidłowa/Brak grupy {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Nie znaleziono numerów seryjnych" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Ilość numerów seryjnych ({s}) musi odpowiadać ilości ({q})" @@ -122,7 +130,7 @@ msgstr "Brak pliku" msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Załącznik" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Wybierz plik do załączenia" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "Łącze" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" @@ -152,12 +160,12 @@ msgstr "Komentarz" msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Użytkownik" @@ -194,42 +202,42 @@ msgstr "Błąd zmiany nazwy pliku" msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Nazwa" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Opis" @@ -241,7 +249,7 @@ msgstr "Opis (opcjonalny)" msgid "parent" msgstr "nadrzędny" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" @@ -295,87 +303,99 @@ msgstr "Brakuje wymaganej kolumny: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Zduplikowana kolumna: '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "Czeski" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Niemiecki" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Grecki" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Angielski" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Hiszpański" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Hiszpański (Meksyk)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "Perski" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Francuski" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Hebrajski" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Węgierski" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Włoski" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japoński" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreański" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Holenderski" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norweski" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polski" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portugalski" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Rosyjski" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Szwedzki" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Tajski" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Turecki" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Wietnamski" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Chiński" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "W toku" @@ -400,14 +420,14 @@ msgstr "W toku" msgid "Placed" msgstr "Umieszczony" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Zakończono" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Anulowano" @@ -421,14 +441,14 @@ msgstr "Zagubiono" msgid "Returned" msgstr "Zwrócone" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Wysłane" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Zniszczone" msgid "Rejected" msgstr "Odrzucone" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Utworzono element magazynowy" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Edytuj pozycję magazynową" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Przypisano numer seryjny" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Zapas policzony" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Zapas dodany ręcznie" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Zapas usunięty ręcznie" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Lokalizacja zmieniona" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Podziel element podrzędny" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Wyślij do klienta" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Zwrócony od klienta" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Produkcja" @@ -560,51 +584,51 @@ msgstr "Niedozwolony znak w nazwie ({x})" #: InvenTree/validators.py:137 InvenTree/validators.py:153 msgid "Overage value must not be negative" -msgstr "" +msgstr "Wartość przedawnienia nie może być ujemna" #: InvenTree/validators.py:155 msgid "Overage must not exceed 100%" -msgstr "" +msgstr "Przedawnienie nie może przekroczyć 100 %" #: InvenTree/validators.py:162 msgid "Invalid value for overage" -msgstr "" +msgstr "Nieprawidłowa wartość przedawnienia" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Usuń element" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Zaznacz pole aby potwierdzić usunięcie elementu" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Edytuj informacje użytkownika" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Ustaw hasło" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Hasła muszą być zgodne" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Informacja systemowa" #: barcodes/api.py:55 barcodes/api.py:156 msgid "Must provide barcode_data parameter" -msgstr "" +msgstr "Należy określić parametr barcode_data" #: barcodes/api.py:132 msgid "No match found for barcode data" -msgstr "" +msgstr "Nie znaleziono wyników dla danych kodu kreskowego" #: barcodes/api.py:134 msgid "Match found for barcode data" -msgstr "" +msgstr "Znaleziono wyniki dla danych kodu kreskowego" #: barcodes/api.py:159 msgid "Must provide stockitem parameter" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Zlecenie Budowy" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Zlecenia budowy" msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Referencja" @@ -692,33 +717,34 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Komponent" @@ -734,8 +760,8 @@ msgstr "Odwołanie do zamówienia sprzedaży" msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Lokalizacja źródła" @@ -775,21 +801,21 @@ msgstr "Status budowania" msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Kod partii" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Data utworzenia" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Docelowy termin zakończenia" @@ -797,8 +823,8 @@ msgstr "Docelowy termin zakończenia" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Data zakończenia" @@ -806,7 +832,7 @@ msgstr "Data zakończenia" msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Wydany przez" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Odpowiedzialny" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Użytkownik odpowiedzialny za to zamówienie budowy" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Link Zewnętrzny" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Uwagi" @@ -870,73 +897,73 @@ msgstr "Budowanie wyjścia jest już ukończone" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Alokowana ilość musi być większa niż zero" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Budowa" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Element magazynowy" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Lokalizacja magazynowania przedmiotu" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Lokalizacja magazynowania przedmiotu" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Ilość" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Numer seryjny" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Lokalizacja" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" -msgstr "Status" +msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "Akceptuj niekompletne" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "Wyklucz lokalizację" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Data docelowa" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "Zaległe" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Zakończone" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Zamówienie zakupu" @@ -1311,8 +1351,8 @@ msgstr "Źródło magazynu" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Przeznaczenie" @@ -1320,22 +1360,25 @@ msgstr "Przeznaczenie" msgid "Destination location not specified" msgstr "Nie określono lokalizacji docelowej" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "Partia" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Utworzony" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Przydziel zapasy do budowy" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Cofnij przydział zapasów" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "Drukuj etykiety" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Załączniki" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Nowe zlecenie budowy" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "Wartość musi być wartością binarną" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "Wartość musi być liczbą całkowitą" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "Brak grupy" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Wymagane ponowne uruchomienie" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "Nazwa instancji InvenTree" +#: common/models.py:705 +msgid "Server Instance Name" +msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "Użyj nazwy instancji" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Wewnętrzna nazwa firmy" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Domyślna waluta" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Domyślna waluta" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Włącz obsługę skanera kodów" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Szablon" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Złożenie" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Komponent" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Możliwość śledzenia" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Wirtualny" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Pokaż cenę w BOM" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "Dołącz informacje cenowe w tabelach BOM" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "Pokaż historię cen" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "Ceny wewnętrzne" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "Włącz raporty" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Raporty testów" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "dni" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "Włącz opcję zapomnianego hasła" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "Włącz rejestrację" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "Włącz SSO" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "Włącz SSO na stronach logowania" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Adres e-mail jest wymagany" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "Autouzupełnianie użytkowników SSO" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "E-mail dwa razy" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "Hasło dwukrotnie" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "Grupuj przy rejestracji" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "Wymuś MFA" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "Włącz integrację URL" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "Włącz wtyczki, aby dodać ścieżki URL" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "Włącz integrację z aplikacją" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "Włącz wtyczki, aby dodać aplikacje" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "Pokaż obserwowane części" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "Pokaż obserwowane części na stronie głównej" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Pokaż obserwowane kategorie" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "Pokaż obserwowane kategorie części na stronie głównej" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Pokaż najnowsze części" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Pokaż najnowsze części na stronie głównej" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "Pokaż niski stan magazynowy" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "Stały pasek nawigacyjny" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" -msgstr "Pasek nawigacyjny dla InvenTree jest ustawiony na górze ekranu" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "Format daty" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "Preferowany format wyświetlania dat" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "Planowanie komponentów" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Cena" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "Punkt końcowy" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Aktywny" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" -msgstr "Token" +msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "Sekret" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "Współdzielony sekret dla HMAC" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "Id wiadomości" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "Unikalny identyfikator dla tej wiadomości" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" -msgstr "Host" +msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "Host, od którego otrzymano tę wiadomość" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "Nagłówek" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "Nagłówek tej wiadomości" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "Zawartość" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Wyślij plik" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "Poprzedni krok" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2552,7 +2614,7 @@ msgstr "Punkt kontaktowy" msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Obraz" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Waluta" @@ -2589,7 +2652,7 @@ msgstr "Waluta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Część bazowa" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Wybierz część" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Producent" @@ -2613,13 +2676,13 @@ msgstr "Producent" msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Komponent producenta" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Wartość" @@ -2655,10 +2718,10 @@ msgstr "Wartość" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "Jednostki" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Dostawca" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "Wybierz dostawcę" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Uwaga" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Opakowanie" @@ -2733,7 +2796,7 @@ msgstr "Opakowanie" msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "wielokrotność" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "Firma" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Utwórz zamówienie zakupu" @@ -2796,13 +2859,13 @@ msgstr "Prześlij nowy obraz" msgid "Download image from URL" msgstr "Pobierz obraz z adresu URL" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Klient" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Telefon" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Załaduj obrazek" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Utwórz nowego dostawcę części" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Nowy dostawca części" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Opcje" @@ -2869,7 +2932,7 @@ msgstr "Części producenta" msgid "Create new manufacturer part" msgstr "Utwórz nową część producenta" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Nowa część producenta" @@ -2883,10 +2946,10 @@ msgstr "Zapasy dostawcy" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Zamówienia zakupu" @@ -2906,10 +2969,10 @@ msgstr "Nowe zamówienie zakupu" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "Notatki firmy" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Usunąć komponenty dostawcy?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte" @@ -2949,83 +3012,83 @@ msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte" msgid "Supplier List" msgstr "Lista dostawców" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Producenci" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Zamów komponent" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "Edytuj komponent producenta" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "Usuń komponent producenta" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Komponent wewnętrzny" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Dostawcy" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Usuń" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametry" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Nowy parametr" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "Usuń parametry" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "Dodaj parametr" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "Wybrane parametry zostaną usunięte" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "Usuń parametry" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "Utwórz nowy towar" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "Nowy towar" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "Zamów komponent" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Informacja cenowa" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "Edytuj przedział cenowy" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "Ostatnio aktualizowane" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Stan" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Cennik" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Towary" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Now producent" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Klienci" @@ -3186,20 +3252,20 @@ msgstr "Firmy" msgid "New Company" msgstr "Nowa firma" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Pobierz obraz" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "Etykieta" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Aktywne" @@ -3247,7 +3313,7 @@ msgstr "Wysokość [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "Wzór nazwy pliku" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filtry" @@ -3285,374 +3351,392 @@ msgstr "Oznacz zamówienie jako zakończone" msgid "Cancel order" msgstr "Anuluj zamówienie" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Opis Zamówienia" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "Link do zewnętrznej witryny" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Utworzony przez" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "Notatki do zamówienia" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "Odniesienie zamówienia" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "Status zamówienia zakupu" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "odebrane przez" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "Data wydania" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "Data wystawienia zamówienia" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "Data Dostawy Towaru" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "Wartość musi być liczbą dodatnią" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "Data wysyłki" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "wysłane przez" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "Ilość elementów" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "Zamówienie" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Zlecenie zakupu" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "Odebrane" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Cena zakupu" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "Cena zakupu jednostkowego" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "Gdzie kupujący chce przechowywać ten przedmiot?" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "Cena sprzedaży" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "Jednostkowa cena sprzedaży" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "Wysłana ilość" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "Data wysyłki" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "Sprawdzone przez" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "Użytkownik, który sprawdził tę wysyłkę" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "Numer przesyłki" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "Notatki do przesyłki" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "Numer śledzenia" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "Informacje o śledzeniu przesyłki" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "Przesyłka została już wysłana" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "Linia" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "Przesyłka" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "Komponent" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "Niekompletny" msgid "Issued" msgstr "Wydany" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "Edytuj zamówienie zakupu" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Wybierz dostawcę części" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Usuń wiersz" @@ -3789,19 +3876,11 @@ msgstr "Usuń wiersz" msgid "Return to Orders" msgstr "Wróć do zamówień" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "Prześlij plik do zamówienia zakupu" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "Przedmioty" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "Dodaj element zamówienia" @@ -3889,15 +3968,30 @@ msgstr "Dodaj element zamówienia" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "Otrzymane elementy" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "Notatki zamówień" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "Oczekujące przesyłki" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "Akcje" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "Nowa wysyłka" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "Ważny" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "Musi być większe niż zero" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "Musi być prawidłową ilością" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "To pole jest wymagane" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Domyślna lokalizacja" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "Dostępna ilość" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "W Zamówieniu" @@ -4121,14 +4215,14 @@ msgstr "Domyślne słowa kluczowe" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Kategorie części" @@ -4138,9 +4232,8 @@ msgstr "Kategorie części" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Części" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Nazwa komponentu" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "Czy szablon" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Czy ta część jest wariantem innej części?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Wariant" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Opis komponentu" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Słowa kluczowe" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Kategoria" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" -msgstr "IPN" +msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Wersja" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "Domyślne wygasanie" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Czy ten komponent może być zbudowany z innych komponentów?" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Czy ta część może być użyta do budowy innych części?" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Czy to wirtualna część, taka jak oprogramowanie lub licencja?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "Tworzenie użytkownika" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "Testowy opis" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "Wprowadź opis do tego testu" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "Wymagane" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "Wymaga wartości" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "Wymaga załącznika" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "Dane" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "ID komponentu" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "Nazwa komponentu" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "IPN komponentu" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "Poziom" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcjonalne" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Dziedziczone" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "Część 1" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "Część 2" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "Waluta zakupu tego towaru" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "Usuń istniejące dane" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "Pomiń nieprawidłowe wiersze" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "Wyczyść istniejący BOM" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "Nie podano ilości" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "Nieprawidłowa ilość" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "Ścieżka kategorii" msgid "Top level part category" msgstr "Kategoria najwyższego poziomu" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Podkategorie" @@ -4745,23 +4842,23 @@ msgstr "Eksportuj" msgid "Export Data" msgstr "Eksportuj dane" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "Parametry części" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "Utwórz nową kategorię części" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "Utwórz część" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "Utwórz kolejną część po tej" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "Część utworzona pomyślnie" @@ -4801,7 +4898,7 @@ msgstr "Jeśli ta kategoria zostanie usunięta, te części zostaną przeniesion msgid "Import Parts" msgstr "Importuj Części" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "Duplikuj część" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "Warianty Części" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "Utwórz nowy wariant" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "Nowy wariant" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "Powiązane części" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "Dodaj powiązane" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Zestawienie materiałowe" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "Akcje eksportu" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Eksportuj BOM" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "Drukuj raport BOM" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "Wgraj BOM" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Kopiuj BOM" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "Weryfikuj BOM" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "Nowa część w BOM" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "Dodaj część do BOM" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "Złożenia" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Dostawcy Części" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "Producenci części" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "Powiązane części" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "Dodaj powiązaną część" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "Usuń kolumnę" #: 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 "Duplikuj wybrane" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "Niewystarczające uprawnienia." @@ -5012,7 +5110,7 @@ msgstr "Niewystarczające uprawnienia." msgid "Return to Parts" msgstr "Powrót do części" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "Importuj części z pliku" @@ -5112,13 +5210,13 @@ msgstr "Część jest wirtualna (nie fizyczna)" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "Nieaktywny" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "Na stanie" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "Wymagana ilość nie została przydzielona" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "Wymagana ilość została przydzielona" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "Wymagane do zamówień sprzedaży" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "Przypisane do zamówień sprzedaży" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "Minimalny poziom stanu magazynowego" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "Ostatni numer seryjny" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "Szukaj numeru seryjnego" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "Oblicz" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "Nie znaleziono pasujących obrazów" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "Ukryj szczegóły części" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "Cennik dostawcy" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "Cena jednostkowa" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "Całkowity Koszt" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "Brak dostępnych cen dostawców" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "Cena zakupu jednostkowego" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "Całkowita cena zakupu" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "Uwaga: cena BOM jest niekompletna dla tej części" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "Brak dostępnych cen BOM" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "Cena wewnętrzna" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "Brak dostępnych informacji o cenach dla tej części." -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "Warianty" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Użyte w" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "Planowanie" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "Szablony testowe" @@ -5309,69 +5389,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "Przedziały cenowe" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "Pokaż cenę dostawcy" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "Pokaż cenę zakupu" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "Pokaż koszt BOM" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "Pokaż koszt sprzedaży" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "Pokaż cenę sprzedaży" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "Parametry obliczeniowe" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "Koszty dostawcy" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "Przejdź do przeglądu" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "Koszt wewnętrzny" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "Koszt BOM" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "Koszt sprzedaży" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5379,8 +5459,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "Brak w magazynie" @@ -5434,103 +5514,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "Nieznana baza danych" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "Ustaw kategorię części" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "Żaden" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "Kod QR części" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "Wybierz obrazek części" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "Zaktualizowano zdjęcie części" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "Nie znaleziono obrazka części" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "Potwierdź usunięcie części" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "Część została usunięta" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "Cennik części" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "Edytuj kategorię części" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5539,11 +5612,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5639,92 +5712,92 @@ msgstr "Instalacja nie została potwierdzona" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Nazwa szablonu" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "Filtr części" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "Wycinek" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5737,12 +5810,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Numer Seryjny" @@ -5751,19 +5824,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" -msgstr "Test" +msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "Wynik" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "Data" @@ -5781,26 +5854,26 @@ msgid "Installed Items" msgstr "Zainstalowane elementy" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "Numer seryjny" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "Data ważności" @@ -5840,228 +5913,232 @@ msgstr "Potwierdź odinstalowanie" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "Właściciel" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "Wybierz właściciela" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "Nadrzędny towar" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "Wybierz pasującą część dostawcy dla tego towaru" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "Zainstalowane w" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "Usuń po wyczerpaniu" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Ilość nie może przekraczać dostępnej ilości towaru ({n})" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "Nazwa testu" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6069,10 +6146,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "Cena zakupu tego towaru" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Waluta zakupu tego towaru" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6098,7 +6171,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" @@ -6182,46 +6255,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6325,7 +6398,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "Termin minął" @@ -6335,12 +6408,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "Ostatnia aktualizacja" @@ -6377,7 +6450,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Lokacje nie są ustawione" @@ -6475,8 +6548,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Lokacje stanu magazynowego" @@ -6553,11 +6625,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6597,7 +6669,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6605,79 +6677,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Utwórz nową lokalizację magazynową" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "Ilość nie może być ujemna" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Odmowa dostępu" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "Nie masz uprawnień do przeglądania tej strony." -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6709,6 +6782,10 @@ msgstr "" msgid "Depleted Stock" msgstr "Wyczerpane stany magazynowe" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6773,14 +6850,14 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:51 #: templates/InvenTree/settings/settings.html:314 msgid "ID" -msgstr "ID" +msgstr "" #: templates/InvenTree/notifications/notifications.html:57 msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "Wiadomość" @@ -6859,7 +6936,7 @@ msgid "Signup" msgstr "Rejestracja" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "Ustawienia" @@ -6897,42 +6974,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "Wtyczki" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "Instaluj wtyczkę" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" -msgstr "Admin" +msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "Autor" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "Wersja" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "Nieaktywne wtyczki" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "Błąd stosu wtyczki" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "Etap" @@ -6970,8 +7051,8 @@ msgid "This plugin was installed as a package" msgstr "Ta wtyczka została zainstalowana jako pakiet" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Ta wtyczka została znaleziona w lokalnej ścieżce InvenTree" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" @@ -7113,7 +7194,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7326,8 +7407,8 @@ msgstr "Pomóż w tłumaczeniu!" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "Tłumaczenie języka natywnego aplikacji internetowej InvenTree jest wkładem społeczności przez crowdin. Wkłady są mile widziane i zachęcane." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" @@ -7426,7 +7507,7 @@ msgid "This email confirmation link expired or is invalid. Please o zażądanie nowego e-maila potwierdzającego adres e-mail." #: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "Zaloguj się" @@ -7446,19 +7527,11 @@ msgid "If you have not created an account yet, then please\n" msgstr "Jeżeli jeszcze nie utworzyłeś konta, to proszę najpierw\n" "zarejstruj się." -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "Zapomniałeś hasła?" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "Instancja demonstracyjna InvenTree" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "Kliknij tutaj, aby zobaczyć szczegóły logowania" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "lub użyj SSO" @@ -7629,15 +7702,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "Wymagana ilość" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Dostępne" @@ -7647,10 +7720,6 @@ msgstr "Dostępne" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "Otrzymujesz tę wiadomość, ponieważ masz włączone powiadomienia dla tej części " -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "Wersja InvenTree" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7767,101 +7836,101 @@ msgstr "Edytuj załącznik" msgid "Delete attachment" msgstr "Usuń załącznik" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "Zeskanuj dane kodu kreskowego tutaj za pomocą skanera" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "Wprowadź dane kodu kreskowego" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "Kod kreskowy" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "Wprowadź notatki" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "Błąd serwera" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "Nieznana odpowiedź serwera" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "Niepoprawna odpowiedź serwera" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "Zeskanuj dane kodu kreskowego poniżej" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "Zeskanuj kod kreskowy" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "Brak adresu URL w odpowiedzi" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "Rozłącz" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "Sprawdź" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7878,12 +7947,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" -msgstr "Format" +msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "Wybierz format pliku" @@ -7959,75 +8028,84 @@ msgstr "Dodaj zamiennik" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "Zobacz BOM" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8052,12 +8130,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "Ostatni numer seryjny" @@ -8105,173 +8183,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "Wyjście" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "Ilość za" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "Przydzielono" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "ładowanie" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Wybierz części" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Potwierdź przydział zapasów" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "Wybierz" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "Brak informacji o użytkowniku" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "Brak informacji" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8291,7 +8389,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "Dodaj dostawcę" @@ -8336,34 +8434,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "Nie znaleziono parametrów" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "Edytuj Parametr" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "Usuń parametr" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "Edytuj Parametr" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "Usuń parametr" @@ -8471,7 +8569,7 @@ msgstr "TAK" msgid "NO" msgstr "Nie" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8480,7 +8578,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "Wybierz przedmioty magazynowe" @@ -8596,294 +8694,332 @@ msgstr "Błąd podczas żądania danych formularza" msgid "Company ID" msgstr "ID firmy" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "ID lokalizacji" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "ID zamówienia" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "ID wysyłki" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "ID kategorii" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "ID części dostawcy" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "Kod zamówienia" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "Zamówione" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "Ilość do otrzymania" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "Potwierdź odbiór elementów" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "Razem" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "Cena jednostkowa" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "Cena całkowita" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "Nie znaleziono zamówień sprzedaży" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "Nieprawidłowy klient" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "Edytuj wysyłkę" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "Kompletna wysyłka" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "Usuń wysyłkę" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "Edytuj wysyłkę" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "Usuń wysyłkę" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "Nie odnaleziono pasujących przesyłek" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "Numer referencyjny przesyłki" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "Nie wysłano" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "Śledzenie" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Potwierdź przydział zapasów" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "Cena zakupu" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "Oblicz cenę" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "Zaktualizuj cenę jednostkową" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Atrybuty części" @@ -8964,177 +9100,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "Edytuj część" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "Część zmodyfikowana" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "Utwórz wariant części" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "Masz włączone powiadomienia dla tej części" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "Masz włączone powiadomienia dla tej części" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "Włącz powiadomienia dla tej części" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "Zostałeś wypisany z powiadomień dla tej części" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "Obserwowane części" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Nie znaleziono wariantów" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Nie znaleziono części" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Brak kategorii" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Wyświetl jako listę" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Wyświetl jako siatkę" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Wyświetl jako drzewo" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "Obserwowana kategoria" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Ścieżka" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "Nie znaleziono informacji o ${human_name}" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "Edytuj ${human_name}" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "Usuń ${human_name}" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "Cena jednostkowa" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9228,328 +9364,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "Przenieś" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "Weź" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "Dodaj stan" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "Dodaj" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "Usuń stan magazynowy" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "BRAK WYNIKÓW" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "Dodaj wynik testu" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "W produkcji" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "Kod statusu musi być wybrany" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "Szczegóły" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "Lokalizacja już nie istnieje" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "Zamówienie zakupu już nie istnieje" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "Klient już nie istnieje" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "Element magazynowy już nie istnieje" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "Dodano" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "Usunięto" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9580,12 +9716,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "Obesrwowane" @@ -9622,12 +9758,12 @@ msgid "Serial number" msgstr "Numer seryjny" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Kod partii" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "Aktywne części" @@ -9696,68 +9832,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 -msgid "Has purchase price" +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 +msgid "Has purchase price" +msgstr "Posiada cenę zakupu" + +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "Test pomyślny" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" -msgstr "" +msgstr "Przypisane do mnie" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" -msgstr "" +msgstr "Status zamówienia" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "Posiada IPN" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "Część posiada wewnętrzny numer części" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "Pokaż aktywne części" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "Możliwość zakupu" @@ -9797,7 +9953,7 @@ msgstr "z" msgid "rows" msgstr "wierszy" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9827,45 +9983,41 @@ msgstr "Kolumny" msgid "All" msgstr "Wszystkie" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Kup" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Sprzedaj" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" -msgstr "" +msgstr "Pokaż powiadomienia" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" -msgstr "" +msgstr "Nowe powiadomienia" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Wyloguj się" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Zaloguj się" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "O InvenTree" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "Tryb demonstracyjny InvenTree" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Zapisz" #: templates/notifications.html:13 msgid "Show all notifications and history" -msgstr "" +msgstr "Pokaż wszystkie powiadomienia i historię" #: templates/qr_code.html:11 msgid "QR data not provided" @@ -9881,23 +10033,23 @@ msgstr "Zaloguj się ponownie" #: templates/search.html:9 msgid "Show full search results" -msgstr "" +msgstr "Pokaż pełne wyniki wyszukiwania" #: templates/search.html:12 msgid "Clear search" -msgstr "" +msgstr "Wyczyść wyszukiwanie" #: templates/search.html:16 msgid "Filter results" -msgstr "" +msgstr "Filtruj wyniki" #: templates/search.html:20 msgid "Close search menu" -msgstr "" +msgstr "Zamknij menu wyszukiwania" #: templates/search.html:35 msgid "No search results" -msgstr "" +msgstr "Brak wyników" #: templates/stats.html:9 msgid "Server" @@ -9949,11 +10101,11 @@ msgstr "Wykryto problemy" #: templates/stats.html:64 msgid "Background Worker" -msgstr "" +msgstr "Proces w tle" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "" +msgstr "Proces w tle nie jest uruchomiony" #: templates/stats.html:75 msgid "Email Settings" @@ -10051,35 +10203,35 @@ msgstr "Uprawnienia" msgid "Important dates" msgstr "Ważne daty" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Uprawnienia nadane" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Grupa" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Widok" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Uprawnienie do wyświetlania przedmiotów" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Uprawnienie do dodawania przedmiotów" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Zmień" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Uprawnienie do edycji przedmiotów" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Uprawnienie do usuwania przedmiotów" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.mo b/InvenTree/locale/pt/LC_MESSAGES/django.mo deleted file mode 100644 index 71cbdf3e9d..0000000000 Binary files a/InvenTree/locale/pt/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 1ccdefbe05..1b366e8ca3 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -1,115 +1,123 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" -"Language-Team: Portuguese\n" -"Language: pt_PT\n" +"Language-Team: Portuguese, Brazilian\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" -msgstr "" +msgstr "API endpoint não encontrado" #: InvenTree/api.py:103 msgid "No action specified" -msgstr "" +msgstr "Nenhuma ação especificada" #: InvenTree/api.py:118 msgid "No matching action found" -msgstr "" +msgstr "Nenhuma ação correspondente encontrada" #: InvenTree/fields.py:100 msgid "Enter date" -msgstr "" +msgstr "Insira uma Data" #: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 #: order/forms.py:57 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:601 msgid "Confirm" -msgstr "" +msgstr "Confirmar" #: InvenTree/forms.py:142 msgid "Confirm delete" -msgstr "" +msgstr "Confirmar exclusão" #: InvenTree/forms.py:143 msgid "Confirm item deletion" -msgstr "" +msgstr "Confirmar exclusão do item" #: InvenTree/forms.py:174 msgid "Enter password" -msgstr "" +msgstr "Digite a senha" #: InvenTree/forms.py:175 msgid "Enter new password" -msgstr "" +msgstr "Insira uma nova senha" #: InvenTree/forms.py:182 msgid "Confirm password" -msgstr "" +msgstr "Confirmar senha" #: InvenTree/forms.py:183 msgid "Confirm new password" -msgstr "" +msgstr "Confirmar nova senha" #: InvenTree/forms.py:215 msgid "Select Category" -msgstr "" +msgstr "Selecionar Categoria" #: InvenTree/forms.py:236 msgid "Email (again)" -msgstr "" +msgstr "E-mail (novamente)" #: InvenTree/forms.py:240 msgid "Email address confirmation" -msgstr "" +msgstr "Confirmação do endereço de email" #: InvenTree/forms.py:260 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -194,42 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -241,7 +249,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.mo b/InvenTree/locale/pt_br/LC_MESSAGES/django.mo deleted file mode 100644 index 2c90dd0c81..0000000000 Binary files a/InvenTree/locale/pt_br/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po index f4ee57bc48..b22d6fe870 100644 --- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-26 01:04+0000\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,6 +36,7 @@ msgstr "" #: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46 #: order/forms.py:57 templates/account/email_confirm.html:20 +#: templates/js/translated/forms.js:601 msgid "Confirm" msgstr "" @@ -79,36 +80,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 #: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -121,7 +131,8 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2173 +#: InvenTree/models.py:197 stock/models.py:2202 +#: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -130,17 +141,19 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:873 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 +#: templates/js/translated/company.js:540 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" #: InvenTree/models.py:205 build/models.py:332 part/models.py:874 -#: stock/models.py:641 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:208 +#: InvenTree/models.py:208 templates/js/translated/attachment.js:163 msgid "Comment" msgstr "" @@ -148,11 +161,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2374 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 #: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -189,7 +203,7 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 #: company/models.py:415 label/models.py:112 part/models.py:817 #: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 @@ -198,21 +212,33 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:840 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 #: part/templates/part/set_category.html:14 report/models.py:190 -#: report/models.py:553 report/models.py:592 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 +#: templates/js/translated/company.js:551 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -224,7 +250,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2877 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -278,99 +304,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:672 msgid "Czech" msgstr "" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:673 msgid "German" msgstr "" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:675 msgid "English" msgstr "" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:679 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:678 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:679 msgid "French" msgstr "" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:686 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "" -#: InvenTree/settings.py:687 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:688 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:689 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + #: InvenTree/settings.py:690 -msgid "Portugese" -msgstr "" - -#: InvenTree/settings.py:691 -msgid "Portugese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:692 msgid "Russian" msgstr "" -#: InvenTree/settings.py:693 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:694 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "" -#: InvenTree/settings.py:695 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:696 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:697 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -387,7 +413,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -416,7 +442,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -496,7 +523,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" @@ -504,7 +531,7 @@ msgstr "" msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" @@ -568,27 +595,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -647,14 +674,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -664,11 +692,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2788 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -687,12 +718,12 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 #: part/models.py:2320 part/models.py:2336 part/models.py:2355 #: part/models.py:2372 part/models.py:2474 part/models.py:2596 -#: part/models.py:2686 part/models.py:2763 part/models.py:3053 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -702,6 +733,19 @@ msgstr "" #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -717,14 +761,13 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" #: build/models.py:253 -msgid "" -"Select location to take stock from for this build (leave blank to take from " -"any stock location)" +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" #: build/models.py:258 @@ -759,30 +802,30 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:645 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1012 -#: part/templates/part/part_base.html:331 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" #: build/models.py:299 -msgid "" -"Target date for build completion. Build will be overdue after this date." +msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -790,7 +833,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -799,10 +842,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -811,25 +855,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:372 stock/models.py:639 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:17 part/models.py:1001 -#: part/templates/part/part_sidebar.html:60 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:711 -#: stock/models.py:2073 stock/models.py:2179 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -849,62 +898,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 -msgid "" -"Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1171 +msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2779 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -916,22 +972,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -947,169 +1019,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:479 stock/models.py:1282 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 -msgid "" -"Integer quantity required, as the bill of materials contains trackable parts" +#: build/serializers.py:216 +msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:591 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 -msgid "" -"Accept that stock items have not been fully allocated to this build order" +#: build/serializers.py:448 +msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 -msgid "" -"Accept that the required number of build outputs have not been completed" +#: build/serializers.py:464 +msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2903 -#: part/models.py:3045 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 -msgid "" -"Stock location where parts are to be sourced (leave blank to take from any " -"location)" +#: build/serializers.py:749 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1180,10 +1273,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1196,22 +1292,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1250,7 +1352,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1264,12 +1367,19 @@ msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 +#: templates/js/translated/table_filters.js:151 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1289,7 +1399,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1382,33 +1492,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:122 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1489,899 +1607,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2598 report/models.py:183 +#: common/models.py:806 part/models.py:2598 report/models.py:183 +#: templates/js/translated/table_filters.js:38 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:964 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 +#: templates/js/translated/table_filters.js:168 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:970 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:981 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:986 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:976 +#: common/models.py:841 part/models.py:976 +#: templates/js/translated/table_filters.js:46 +#: templates/js/translated/table_filters.js:100 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:996 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 +#: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 -msgid "" -"Check that all plugins are installed on startup - enable in container " -"enviroments" +#: common/models.py:1091 +msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:991 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 +#: templates/js/translated/table_filters.js:34 +#: templates/js/translated/table_filters.js:96 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" #: common/views.py:93 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:243 part/views.py:208 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:209 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2423,6 +2570,7 @@ msgstr "" #: company/models.py:112 company/templates/company/company_base.html:97 #: templates/InvenTree/settings/plugin_settings.html:55 +#: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2496,7 +2644,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2504,8 +2653,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:583 -#: stock/templates/stock/item_base.html:142 +#: company/models.py:320 company/models.py:535 stock/models.py:611 +#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2514,22 +2663,29 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 +#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:517 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" -#: company/models.py:336 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 +#: templates/js/translated/company.js:533 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" -#: company/models.py:343 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2542,8 +2698,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2554,7 +2710,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2166 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2563,8 +2720,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:958 part/models.py:2566 -#: part/templates/part/part_base.html:306 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2577,23 +2735,28 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 +#: templates/js/translated/company.js:337 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" -#: company/models.py:546 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:552 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2610,7 +2773,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2791 part/templates/part/upload_bom.html:59 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" @@ -2625,7 +2788,8 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:607 stock/templates/stock/item_base.html:322 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2655,11 +2819,12 @@ msgstr "" #: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:176 +#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322 msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2672,6 +2837,7 @@ msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 +#: templates/js/translated/company.js:265 msgid "Edit Company" msgstr "" @@ -2694,10 +2860,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:626 -#: stock/models.py:627 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2710,7 +2879,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:491 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2726,17 +2895,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2764,7 +2933,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2778,9 +2947,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 -#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:47 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2800,9 +2970,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 -#: templates/InvenTree/settings/sidebar.html:49 templates/navbar.html:58 +#: templates/InvenTree/settings/sidebar.html:49 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2818,6 +2989,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2826,14 +2998,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2841,80 +3013,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 +#: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 +#: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 -#: users/models.py:218 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 +#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:19 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -2935,16 +3110,19 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:591 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" #: company/templates/company/supplier_part.html:38 +#: templates/js/translated/company.js:863 msgid "Edit supplier part" msgstr "" #: company/templates/company/supplier_part.html:42 +#: templates/js/translated/company.js:864 msgid "Delete supplier part" msgstr "" @@ -2960,6 +3138,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -2974,13 +3153,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -2988,11 +3167,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3009,11 +3190,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 -#: templates/InvenTree/settings/sidebar.html:43 templates/navbar.html:28 +#: templates/InvenTree/settings/sidebar.html:43 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3027,7 +3212,7 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" @@ -3038,8 +3223,8 @@ msgstr "" #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3052,7 +3237,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3060,7 +3245,7 @@ msgstr "" msgid "New Customer" msgstr "" -#: company/views.py:69 +#: company/views.py:69 templates/js/translated/search.js:159 msgid "Companies" msgstr "" @@ -3068,20 +3253,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3142,7 +3327,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:318 report/models.py:455 report/models.py:493 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3167,366 +3352,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 -msgid "" -"Expected date for order delivery. Order will be overdue after this date." +#: order/models.py:274 +msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 -msgid "" -"Target date for order completion. Order will be overdue after this date." +#: order/models.py:610 +msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:720 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3599,14 +3810,17 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" #: order/templates/order/order_cancel.html:8 -msgid "" -"Cancelling this order means that the order and line items will no longer be " -"editable." +msgid "Cancelling this order means that the order and line items will no longer be editable." msgstr "" #: order/templates/order/order_complete.html:7 @@ -3618,14 +3832,11 @@ msgid "This order has line items which have not been marked as received." msgstr "" #: order/templates/order/order_complete.html:11 -msgid "" -"Completing this order means that the order and line items will no longer be " -"editable." +msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" #: order/templates/order/order_issue.html:8 -msgid "" -"After placing this purchase order, line items will no longer be editable." +msgid "After placing this purchase order, line items will no longer be editable." msgstr "" #: order/templates/order/order_wizard/match_parts.html:12 @@ -3654,6 +3865,10 @@ msgstr "" #: 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_references.html:49 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3709,6 +3924,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3742,9 +3959,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3752,15 +3969,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3775,7 +4007,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3784,16 +4016,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3810,16 +4043,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -3890,52 +4124,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:112 part/models.py:892 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:356 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -3948,6 +4182,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -3985,7 +4222,7 @@ msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 -#: templates/InvenTree/search.html:95 templates/stats.html:96 +#: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 #: users/models.py:40 msgid "Part Categories" msgstr "" @@ -3995,8 +4232,9 @@ msgstr "" #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 -#: templates/InvenTree/settings/sidebar.html:39 templates/navbar.html:21 -#: templates/stats.html:92 templates/stats.html:101 users/models.py:41 +#: templates/InvenTree/settings/sidebar.html:39 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4050,7 +4288,7 @@ msgid "Part description" msgstr "" #: part/models.py:846 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:320 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" @@ -4059,10 +4297,11 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:854 part/models.py:2392 part/models.py:2641 -#: part/templates/part/part_base.html:283 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" @@ -4070,7 +4309,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:860 part/templates/part/part_base.html:292 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" @@ -4082,8 +4323,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:868 part/templates/part/part_base.html:299 -#: report/models.py:196 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" @@ -4091,7 +4332,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:937 part/templates/part/part_base.html:365 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" @@ -4183,7 +4424,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2479 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" @@ -4199,7 +4441,8 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2491 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" @@ -4207,7 +4450,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2497 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" @@ -4215,7 +4458,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2503 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" @@ -4269,7 +4512,7 @@ msgstr "" msgid "Part ID or part name" msgstr "" -#: part/models.py:2690 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" @@ -4297,181 +4540,189 @@ msgstr "" msgid "BOM level" msgstr "" -#: part/models.py:2764 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2772 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2773 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2779 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2781 part/templates/part/upload_bom.html:58 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 +#: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2781 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2784 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2785 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2788 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2791 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2793 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2793 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2797 part/templates/part/upload_bom.html:57 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 +#: templates/js/translated/table_filters.js:68 +#: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2798 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2803 part/templates/part/upload_bom.html:56 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2804 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2889 stock/models.py:469 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2898 part/models.py:2900 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3012 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3034 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3046 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3054 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3065 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3069 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3069 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3101 -msgid "" -"Error creating relationship: check that the part is not related to itself " -"and that the relationship is unique" +#: part/models.py:3115 +msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4481,9 +4732,7 @@ msgstr "" #: part/tasks.py:19 #, python-brace-format -msgid "" -"The available stock for {part.name} has fallen below the configured minimum " -"level" +msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "" #: part/templates/part/bom.html:6 @@ -4497,9 +4746,7 @@ msgstr "" #: part/templates/part/bom.html:17 #, python-format -msgid "" -"The BOM for %(part)s was last checked by %(checker)s on " -"%(check_date)s" +msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" msgstr "" #: part/templates/part/bom.html:21 @@ -4507,7 +4754,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4572,7 +4819,7 @@ msgstr "" msgid "Create new part" msgstr "" -#: part/templates/part/category.html:158 +#: part/templates/part/category.html:158 templates/js/translated/bom.js:365 msgid "New Part" msgstr "" @@ -4627,15 +4874,11 @@ msgstr "" #: part/templates/part/category_delete.html:14 #, python-format -msgid "" -"If this category is deleted, these child categories will be moved to " -"%(category)s" +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:16 -msgid "" -"If this category is deleted, these child categories will be moved to the top " -"level part category" +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" #: part/templates/part/category_delete.html:23 @@ -4649,16 +4892,14 @@ msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -msgid "" -"If this category is deleted, these parts will be moved to the top level part " -"category" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4698,134 +4939,134 @@ msgstr "" msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4968,11 +5209,15 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:143 +#: templates/js/translated/company.js:508 +#: templates/js/translated/company.js:765 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:599 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -4981,138 +5226,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 +#: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:258 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:264 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:313 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:342 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:346 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:469 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:593 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5123,8 +5354,7 @@ msgstr "" #: part/templates/part/partial_delete.html:9 #, python-format msgid "" -"Part '%(full_name)s' cannot be deleted as it is still " -"marked as active.\n" +"Part '%(full_name)s' cannot be deleted as it is still marked as active.\n" "
Disable the \"Active\" part attribute and re-try.\n" " " msgstr "" @@ -5136,102 +5366,92 @@ msgstr "" #: part/templates/part/partial_delete.html:22 #, python-format -msgid "" -"This part is used in BOMs for %(count)s other parts. If you delete this " -"part, the BOMs for the following parts will be updated" +msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated" msgstr "" #: part/templates/part/partial_delete.html:32 #, python-format -msgid "" -"There are %(count)s stock entries defined for this part. If you delete this " -"part, the following stock entries will also be deleted:" +msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:43 #, python-format -msgid "" -"There are %(count)s manufacturers defined for this part. If you delete this " -"part, the following manufacturer parts will also be deleted:" +msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:54 #, python-format -msgid "" -"There are %(count)s suppliers defined for this part. If you delete this " -"part, the following supplier parts will also be deleted:" +msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:" msgstr "" #: part/templates/part/partial_delete.html:65 #, python-format -msgid "" -"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this " -"part will permanently remove this tracking information." +msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5239,7 +5459,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5273,8 +5494,7 @@ 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 " +msgid "The BOM file must contain the required named columns as provided in the " msgstr "" #: part/templates/part/upload_bom.html:39 @@ -5294,107 +5514,98 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 -msgid "" -"Your enviroment has an outdated git version. This prevents InvenTree from " -"loading plugin details." +msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" #: plugin/events.py:225 @@ -5490,9 +5701,7 @@ msgid "Confirm plugin installation" msgstr "" #: plugin/serializers.py:60 -msgid "" -"This will install this plugin now into the current instance. The instance " -"will go into maintenance." +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" #: plugin/serializers.py:75 @@ -5564,31 +5773,31 @@ msgstr "" msgid "Purchase order query filters" msgstr "" -#: report/models.py:494 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5601,7 +5810,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:631 stock/templates/stock/item_base.html:156 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5610,18 +5824,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2154 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2160 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5639,23 +5854,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:543 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:550 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:575 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:688 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5668,9 +5886,7 @@ msgid "Enter unique serial numbers (or leave blank)" msgstr "" #: stock/forms.py:133 -msgid "" -"Destination for serialized stock (by default, will remain in current " -"location)" +msgid "Destination for serialized stock (by default, will remain in current location)" msgstr "" #: stock/forms.py:135 @@ -5697,233 +5913,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:725 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:726 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:486 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:496 stock/models.py:505 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:497 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:519 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:525 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:532 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:575 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:584 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:592 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:598 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:601 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:608 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:614 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:617 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:633 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:647 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:651 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:660 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:662 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:673 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:676 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:682 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:689 -msgid "" -"Expiry date for stock item. Stock will be considered expired after this date" +#: stock/models.py:718 +msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:702 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:702 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:712 stock/templates/stock/item.html:137 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:721 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:753 +#: stock/models.py:782 msgid "Converted to part" msgstr "" -#: stock/models.py:1273 +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1279 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1285 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1288 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1291 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1298 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1369 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1372 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1375 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1381 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1391 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1399 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1403 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1575 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2131 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2137 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2155 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2167 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2174 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2180 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -5931,10 +6146,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6073,15 +6284,17 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:316 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6185,6 +6398,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6194,10 +6408,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6230,12 +6446,11 @@ msgid "This stock item is allocated to Build Order" msgstr "" #: stock/templates/stock/item_base.html:260 -msgid "" -"This stock item is serialized - it has a unique serial number and the " -"quantity cannot be adjusted." +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:301 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6256,9 +6471,7 @@ msgid "Tests" msgstr "" #: stock/templates/stock/item_base.html:411 -msgid "" -"You are not in the list of owners of this item. This stock item cannot be " -"edited." +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:412 @@ -6276,9 +6489,7 @@ msgstr "" #: stock/templates/stock/item_delete.html:12 #, python-format -msgid "" -"This will remove %(qty)s units of %(full_name)s from stock." +msgid "This will remove %(qty)s units of %(full_name)s from stock." msgstr "" #: stock/templates/stock/item_serialize.html:5 @@ -6327,9 +6538,7 @@ msgid "Location Owner" msgstr "" #: stock/templates/stock/location.html:117 -msgid "" -"You are not in the list of owners of this location. This stock location " -"cannot be edited." +msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" #: stock/templates/stock/location.html:133 @@ -6339,7 +6548,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/stats.html:109 users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6354,15 +6563,11 @@ msgstr "" #: stock/templates/stock/location_delete.html:15 #, python-format -msgid "" -"If this location is deleted, these child locations will be moved to " -"%(location)s" +msgid "If this location is deleted, these child locations will be moved to %(location)s" msgstr "" #: stock/templates/stock/location_delete.html:17 -msgid "" -"If this location is deleted, these child locations will be moved to the top " -"level stock location" +msgid "If this location is deleted, these child locations will be moved to the top level stock location" msgstr "" #: stock/templates/stock/location_delete.html:25 @@ -6372,14 +6577,11 @@ msgstr "" #: stock/templates/stock/location_delete.html:27 #, python-format -msgid "" -"If this location is deleted, these stock items will be moved to %(location)s" +msgid "If this location is deleted, these stock items will be moved to %(location)s" msgstr "" #: stock/templates/stock/location_delete.html:29 -msgid "" -"If this location is deleted, these stock items will be moved to the top " -"level stock location" +msgid "If this location is deleted, these stock items will be moved to the top level stock location" msgstr "" #: stock/templates/stock/stock_app_base.html:16 @@ -6423,7 +6625,7 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" @@ -6467,7 +6669,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6475,7 +6677,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" @@ -6487,7 +6689,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:915 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" @@ -6515,39 +6717,40 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6579,6 +6782,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6729,7 +6936,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6739,9 +6946,7 @@ msgstr "" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format -msgid "" -"The Base-URL for this plugin is %(base)s." +msgid "The Base-URL for this plugin is %(base)s." msgstr "" #: templates/InvenTree/settings/mixins/urls.html:23 @@ -6769,9 +6974,7 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "" -"Changing the settings below require you to immediatly restart InvenTree. Do " -"not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" #: templates/InvenTree/settings/plugin.html:34 @@ -6779,10 +6982,11 @@ msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:39 +#: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" @@ -6831,10 +7035,7 @@ msgid "License" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:71 -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." +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:77 @@ -6850,7 +7051,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -6993,7 +7194,8 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 templates/notes_buttons.html:3 +#: templates/InvenTree/settings/user.html:23 +#: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" msgstr "" @@ -7045,9 +7247,7 @@ msgid "Warning:" msgstr "" #: templates/InvenTree/settings/user.html:96 -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." +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:104 @@ -7063,14 +7263,11 @@ msgid "Social Accounts" msgstr "" #: templates/InvenTree/settings/user.html:122 -msgid "" -"You can sign in to your account using any of the following third party " -"accounts:" +msgid "You can sign in to your account using any of the following third party accounts:" msgstr "" #: templates/InvenTree/settings/user.html:157 -msgid "" -"You currently have no social network accounts connected to this account." +msgid "You currently have no social network accounts connected to this account." msgstr "" #: templates/InvenTree/settings/user.html:162 @@ -7210,10 +7407,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "" -"Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are " -"welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7232,8 +7426,12 @@ msgstr "" msgid "InvenTree Version Information" msgstr "" -#: templates/about.html:11 templates/about.html:105 templates/modals.html:15 -#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +#: templates/about.html:11 templates/about.html:105 +#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620 +#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584 +#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986 +#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39 +#: templates/modals.html:50 msgid "Close" msgstr "" @@ -7300,20 +7498,16 @@ msgstr "" #: templates/account/email_confirm.html:16 #, python-format -msgid "" -"Please confirm that %(email)s is an email " -"address for user %(user_display)s." +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" #: templates/account/email_confirm.html:27 #, python-format -msgid "" -"This email confirmation link expired or is invalid. Please issue a new email confirmation request." +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:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "" @@ -7321,8 +7515,7 @@ msgstr "" #, python-format msgid "" "Please sign in with one\n" -"of your existing third party accounts or sign up\n" +"of your existing third party accounts or sign up\n" "for a account and sign in below:" msgstr "" @@ -7333,19 +7526,11 @@ msgid "" "sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7368,9 +7553,7 @@ 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." +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 @@ -7387,10 +7570,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." +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 @@ -7407,8 +7587,7 @@ msgstr "" #: templates/account/signup.html:13 #, python-format -msgid "" -"Already have an account? Then please sign in." +msgid "Already have an account? Then please sign in." msgstr "" #: templates/account/signup.html:27 @@ -7432,9 +7611,7 @@ 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." +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 @@ -7471,9 +7648,7 @@ 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)." +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" #: templates/allauth_2fa/setup.html:23 @@ -7488,11 +7663,11 @@ msgstr "" msgid "Verify" msgstr "" -#: templates/attachment_button.html:4 +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54 msgid "Add Link" msgstr "" -#: templates/attachment_button.html:7 +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:36 msgid "Add Attachment" msgstr "" @@ -7526,23 +7701,22 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 +#: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:31 -msgid "" -"You are receiving this email because you are subscribed to notifications for " -"this part " -msgstr "" - -#: templates/email/email.html:35 -msgid "InvenTree version" +msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" #: templates/email/low_stock_notification.html:9 @@ -7569,63 +7743,2277 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/modals.html:19 templates/modals.html:43 +#: templates/js/translated/api.js:190 templates/js/translated/modals.js:1056 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1057 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:197 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:198 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1066 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1067 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1071 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1072 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1076 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1077 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:217 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:218 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:222 templates/js/translated/modals.js:1081 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:223 templates/js/translated/modals.js:1082 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:226 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:227 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:78 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:100 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:110 +msgid "Confirm Delete" +msgstr "" + +#: templates/js/translated/attachment.js:111 +msgid "Delete Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:167 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:183 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:190 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:30 +msgid "Scan barcode data here using wedge scanner" +msgstr "" + +#: templates/js/translated/barcode.js:32 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:39 +msgid "Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:96 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:97 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:135 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:156 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:183 +#: templates/js/translated/modals.js:1046 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:287 +msgid "Scan barcode data below" +msgstr "" + +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:345 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:363 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: templates/js/translated/barcode.js:386 +msgid "This will remove the association between this stock item and the barcode" +msgstr "" + +#: templates/js/translated/barcode.js:392 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:499 +msgid "Check Stock Items into Location" +msgstr "" + +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:534 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:569 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:573 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:580 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:587 +msgid "Barcode does not match Stock Item" +msgstr "" + +#: templates/js/translated/barcode.js:630 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:693 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:75 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:131 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:249 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 +msgid "Format" +msgstr "" + +#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 +#: templates/js/translated/order.js:456 +msgid "Select file format" +msgstr "" + +#: templates/js/translated/bom.js:294 +msgid "Cascading" +msgstr "" + +#: templates/js/translated/bom.js:295 +msgid "Download cascading / multi-level BOM" +msgstr "" + +#: templates/js/translated/bom.js:300 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:301 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:307 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:308 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:313 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:314 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:319 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:320 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:325 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:326 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:509 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:565 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:576 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:582 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:621 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:622 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:867 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:882 +msgid "Purchase Price Range" +msgstr "" + +#: templates/js/translated/bom.js:889 +msgid "Purchase Price Average" +msgstr "" + +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1000 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1002 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1004 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "Are you sure you want to delete this BOM item?" +msgstr "" + +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1375 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:86 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:120 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:141 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:146 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:174 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 +#: templates/js/translated/stock.js:180 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 +#: templates/js/translated/stock.js:182 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:226 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:227 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:235 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:243 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:274 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:285 +msgid "Unallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:294 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:302 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:325 +msgid "Are you sure you wish to unallocate stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:343 +msgid "Unallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:583 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:672 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:710 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1093 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:1697 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:1707 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:1732 +msgid "Substitute parts available" +msgstr "" + +#: templates/js/translated/build.js:1749 +msgid "Quantity Per" +msgstr "" + +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 +msgid "Allocated" +msgstr "" + +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:2024 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:2025 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:2067 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:2247 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:2248 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:2250 +msgid "If a location is specifed, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:2251 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:2252 +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:2273 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2313 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2350 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2426 +msgid "No information" +msgstr "" + +#: templates/js/translated/build.js:2483 +msgid "No parts allocated for" +msgstr "" + +#: templates/js/translated/company.js:65 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:78 templates/js/translated/company.js:177 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:99 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:108 +msgid "Delete Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:193 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:208 +msgid "Edit Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:218 +msgid "Delete Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:286 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:363 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:372 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:387 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:406 +msgid "The following manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:423 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:480 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:500 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:504 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:737 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/filters.js:178 +#: templates/js/translated/filters.js:441 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:182 +#: templates/js/translated/filters.js:442 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:204 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:288 +msgid "Download data" +msgstr "" + +#: templates/js/translated/filters.js:291 +msgid "Reload data" +msgstr "" + +#: templates/js/translated/filters.js:295 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:298 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:350 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366 +#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:353 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:368 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:382 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:396 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:627 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:702 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1194 templates/modals.html:19 +#: templates/modals.html:43 msgid "Form errors exist" msgstr "" +#: templates/js/translated/forms.js:1623 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:1833 templates/search.html:29 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2082 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2547 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2559 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:20 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:22 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:307 +msgid "Notes updated" +msgstr "" + +#: templates/js/translated/label.js:39 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/label.js:60 templates/js/translated/report.js:118 +#: templates/js/translated/stock.js:1022 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/label.js:61 +msgid "Stock item(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:79 templates/js/translated/label.js:133 +#: templates/js/translated/label.js:191 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:80 +msgid "No labels found which match selected stock item(s)" +msgstr "" + +#: templates/js/translated/label.js:115 +msgid "Select Stock Locations" +msgstr "" + +#: templates/js/translated/label.js:116 +msgid "Stock location(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:134 +msgid "No labels found which match selected stock location(s)" +msgstr "" + +#: templates/js/translated/label.js:173 +msgid "Part(s) must be selected before printing labels" +msgstr "" + +#: templates/js/translated/label.js:192 +msgid "No labels found which match the selected part(s)" +msgstr "" + +#: templates/js/translated/label.js:261 +msgid "Select Printer" +msgstr "" + +#: templates/js/translated/label.js:265 +msgid "Export to PDF" +msgstr "" + +#: templates/js/translated/label.js:304 +msgid "stock items selected" +msgstr "" + +#: templates/js/translated/label.js:312 templates/js/translated/label.js:328 +msgid "Select Label Template" +msgstr "" + +#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 +#: templates/js/translated/modals.js:610 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 +#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/navbar.html:42 -msgid "Buy" +#: templates/js/translated/modals.js:118 +msgid "Form Title" msgstr "" -#: templates/navbar.html:54 -msgid "Sell" +#: templates/js/translated/modals.js:392 +msgid "Waiting for server..." msgstr "" -#: templates/navbar.html:94 templates/search.html:8 -#: templates/search_form.html:6 templates/search_form.html:7 +#: templates/js/translated/modals.js:551 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:609 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:666 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:937 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:937 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:949 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1046 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1061 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1062 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1085 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/model_renderers.js:60 +msgid "Company ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:121 +msgid "Stock ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:147 +msgid "Location ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:165 +msgid "Build ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 +msgid "Order ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:302 +msgid "Shipment ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:320 +msgid "Category ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:363 +msgid "Manufacturer Part ID" +msgstr "" + +#: templates/js/translated/model_renderers.js:392 +msgid "Supplier Part ID" +msgstr "" + +#: templates/js/translated/notification.js:231 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:235 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:259 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:300 templates/notifications.html:10 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:79 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/order.js:84 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/order.js:124 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/order.js:130 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/order.js:185 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/order.js:210 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/order.js:235 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/order.js:452 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:546 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/order.js:547 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/order.js:585 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/order.js:738 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/order.js:739 +msgid "Ordered" +msgstr "" + +#: templates/js/translated/order.js:741 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/order.js:760 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/order.js:761 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/order.js:1186 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 +msgid "Total" +msgstr "" + +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 +msgid "Unit Price" +msgstr "" + +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 +msgid "Total Price" +msgstr "" + +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/order.js:1686 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/order.js:1773 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/order.js:1776 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/order.js:1781 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/order.js:1801 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/order.js:1818 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/order.js:1852 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/order.js:1862 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/order.js:1886 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/order.js:1892 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/order.js:2260 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/order.js:2341 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2358 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/order.js:2359 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/order.js:2782 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/order.js:2788 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/order.js:2807 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/order.js:2810 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/order.js:2892 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/order.js:2994 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/order.js:3008 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + +#: templates/js/translated/part.js:55 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:59 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:63 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:67 +msgid "Supplier Options" +msgstr "" + +#: templates/js/translated/part.js:81 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:165 +msgid "Create Initial Stock" +msgstr "" + +#: templates/js/translated/part.js:166 +msgid "Create an initial stock item for this part" +msgstr "" + +#: templates/js/translated/part.js:173 +msgid "Initial Stock Quantity" +msgstr "" + +#: templates/js/translated/part.js:174 +msgid "Specify initial stock quantity for this part" +msgstr "" + +#: templates/js/translated/part.js:181 +msgid "Select destination stock location" +msgstr "" + +#: templates/js/translated/part.js:199 +msgid "Copy Category Parameters" +msgstr "" + +#: templates/js/translated/part.js:200 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: templates/js/translated/part.js:208 +msgid "Add Supplier Data" +msgstr "" + +#: templates/js/translated/part.js:209 +msgid "Create initial supplier data for this part" +msgstr "" + +#: templates/js/translated/part.js:265 +msgid "Copy Image" +msgstr "" + +#: templates/js/translated/part.js:266 +msgid "Copy image from original part" +msgstr "" + +#: templates/js/translated/part.js:274 +msgid "Copy bill of materials from original part" +msgstr "" + +#: templates/js/translated/part.js:281 +msgid "Copy Parameters" +msgstr "" + +#: templates/js/translated/part.js:282 +msgid "Copy parameter data from original part" +msgstr "" + +#: templates/js/translated/part.js:295 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:340 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:342 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:423 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:425 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:432 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:449 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:459 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:462 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:487 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:573 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:577 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:705 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1095 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1119 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:1223 +msgid "Not available" +msgstr "" + +#: templates/js/translated/part.js:1374 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:1520 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:1759 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 +msgid "Path" +msgstr "" + +#: templates/js/translated/part.js:1817 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:1875 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:1897 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:1911 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:1936 +#, python-brace-format +msgid "No ${human_name} information found" +msgstr "" + +#: templates/js/translated/part.js:1993 +#, python-brace-format +msgid "Edit ${human_name}" +msgstr "" + +#: templates/js/translated/part.js:1994 +#, python-brace-format +msgid "Delete ${human_name}" +msgstr "" + +#: templates/js/translated/part.js:2108 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2141 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:2167 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2237 +msgid "Single Price" +msgstr "" + +#: templates/js/translated/part.js:2256 +msgid "Single Price Difference" +msgstr "" + +#: templates/js/translated/plugin.js:22 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/report.js:67 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:75 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:90 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:119 +msgid "Stock item(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:136 templates/js/translated/report.js:189 +#: templates/js/translated/report.js:243 templates/js/translated/report.js:297 +#: templates/js/translated/report.js:351 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:137 +msgid "No report templates found which match selected stock item(s)" +msgstr "" + +#: templates/js/translated/report.js:172 +msgid "Select Builds" +msgstr "" + +#: templates/js/translated/report.js:173 +msgid "Build(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:190 +msgid "No report templates found which match selected build(s)" +msgstr "" + +#: templates/js/translated/report.js:226 +msgid "Part(s) must be selected before printing reports" +msgstr "" + +#: templates/js/translated/report.js:244 +msgid "No report templates found which match selected part(s)" +msgstr "" + +#: templates/js/translated/report.js:279 +msgid "Select Purchase Orders" +msgstr "" + +#: templates/js/translated/report.js:280 +msgid "Purchase Order(s) must be selected before printing report" +msgstr "" + +#: templates/js/translated/report.js:298 templates/js/translated/report.js:352 +msgid "No report templates found which match selected orders" +msgstr "" + +#: templates/js/translated/report.js:333 +msgid "Select Sales Orders" +msgstr "" + +#: templates/js/translated/report.js:334 +msgid "Sales Order(s) must be selected before printing report" +msgstr "" + +#: templates/js/translated/search.js:286 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:289 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:72 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:100 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:109 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:153 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:193 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:232 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:238 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:303 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:393 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:406 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:431 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:452 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:472 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:481 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:604 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:605 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:682 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:683 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:685 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:686 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:772 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:773 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:868 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:869 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:875 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:876 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:880 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:881 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:885 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:886 users/models.py:216 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:890 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:983 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:983 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1023 +msgid "You must select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1181 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1183 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1188 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1235 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1238 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1264 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1320 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1485 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1507 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1536 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1540 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1548 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1554 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1712 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:1717 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:1720 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:1724 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:1726 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:1732 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:1734 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:1741 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:1750 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:1752 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:1756 +#: templates/js/translated/table_filters.js:188 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:1807 +msgid "Stocktake" +msgstr "" + +#: templates/js/translated/stock.js:1889 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:1927 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2099 +msgid "Set Stock Status" +msgstr "" + +#: templates/js/translated/stock.js:2113 +msgid "Select Status Code" +msgstr "" + +#: templates/js/translated/stock.js:2114 +msgid "Status code must be selected" +msgstr "" + +#: templates/js/translated/stock.js:2369 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2426 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2445 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2463 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2486 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2494 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:2570 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:2621 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2657 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:2658 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:2660 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:2661 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/table_filters.js:56 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:60 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:64 +msgid "Validated" +msgstr "" + +#: templates/js/translated/table_filters.js:72 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:110 +#: templates/js/translated/table_filters.js:183 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:111 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:121 +#: templates/js/translated/table_filters.js:122 +#: templates/js/translated/table_filters.js:429 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:126 +#: templates/js/translated/table_filters.js:468 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:218 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:225 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:140 +#: templates/js/translated/table_filters.js:226 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:229 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:144 +#: templates/js/translated/table_filters.js:230 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:148 +#: templates/js/translated/table_filters.js:221 +#: templates/js/translated/table_filters.js:222 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:243 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:163 +#: templates/js/translated/table_filters.js:401 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:164 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:169 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:173 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:174 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:179 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:184 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:189 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:198 +msgid "In Production" +msgstr "" + +#: templates/js/translated/table_filters.js:199 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:203 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:204 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:208 +msgid "Installed" +msgstr "" + +#: templates/js/translated/table_filters.js:209 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:214 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:235 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:253 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:262 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:268 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:430 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:434 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:435 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:440 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:448 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:480 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/tables.js:50 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:54 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:433 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:436 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:441 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:443 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:447 templates/navbar.html:102 +#: templates/search.html:8 templates/search_form.html:6 +#: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/navbar.html:101 -msgid "Scan Barcode" +#: templates/js/translated/tables.js:450 +msgid "No matching results" msgstr "" -#: templates/navbar.html:108 +#: templates/js/translated/tables.js:453 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:456 +msgid "Refresh" +msgstr "" + +#: templates/js/translated/tables.js:459 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:462 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:465 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" -#: templates/notifications.html:10 -msgid "Notifications will load here" -msgstr "" - #: templates/notifications.html:13 msgid "Show all notifications and history" msgstr "" @@ -7658,10 +10046,6 @@ msgstr "" msgid "Close search menu" msgstr "" -#: templates/search.html:29 -msgid "Searching" -msgstr "" - #: templates/search.html:35 msgid "No search results" msgstr "" @@ -7770,10 +10154,6 @@ msgstr "" msgid "Order selected items" msgstr "" -#: templates/stock_table.html:50 -msgid "Order stock" -msgstr "" - #: templates/stock_table.html:52 msgid "Change status" msgstr "" @@ -7822,38 +10202,34 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 -msgid "Add" -msgstr "" - -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.mo b/InvenTree/locale/ru/LC_MESSAGES/django.mo deleted file mode 100644 index 538be8df29..0000000000 Binary files a/InvenTree/locale/ru/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 19537fa0d1..b0ea095a9d 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Подтверждение адреса электронной почт msgid "You must type the same email each time." msgstr "Вы должны вводить один и тот же адрес электронной почты." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Повторяющийся серийный номер: {sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "недопустимое количество" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Пустая строка серийного номера" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Некорректный идентификатор группы {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Недопустимая/несуществующая группа {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Серийных номеров не найдено" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})" @@ -122,7 +130,7 @@ msgstr "Файл не найден" msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Вложения" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Выберите файл для вложения" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "Ссылка" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Ссылка на внешний URL" @@ -152,12 +160,12 @@ msgstr "Комментарий" msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Пользователь" @@ -194,42 +202,42 @@ msgstr "Ошибка переименования файла" msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Название" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Описание" @@ -241,7 +249,7 @@ msgstr "Описание (необязательно)" msgid "parent" msgstr "родитель" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Должно быть действительным номером" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "Повторяющийся столбец: '{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Немецкий" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Греческий" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "Английский" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "Испанский" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "Испанский (Мексика)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Французский" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "Иврит" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Венгерский" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Итальянский" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Японский" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Корейский" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Голландский" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Норвежский" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Польский" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Португальский" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Русский" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Шведский" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Тайский" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Турецкий" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Вьетнамский" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Китайский" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "Ошибка проверки состояния системы InvenTree" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Ожидаемый" @@ -400,14 +420,14 @@ msgstr "Ожидаемый" msgid "Placed" msgstr "Размещены" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Готово" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Отменено" @@ -421,8 +441,8 @@ msgstr "Потерян" msgid "Returned" msgstr "Возвращено" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Доставлено" @@ -446,91 +466,95 @@ msgstr "Разрушено" msgid "Rejected" msgstr "Отклоненный" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Отслеживание устаревших запасов" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Товар создан" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Отредактированный товар" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Присвоенный серийный номер" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Склад подсчитан" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Добавлен вручную" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Удалено вручную" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Расположение изменено" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Укомплектовано" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Удалено из сборки" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Установленный элемент компонента" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Удален элемент компонента" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Отделить от родительского элемента" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Разбить дочерний элемент" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Объединенные позиции на складе" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Отправлено клиенту" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Возвращено от клиента" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Создан вывод заказа сборки" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Вывод заказа сборки завершён" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Получено по заказу на покупку" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Продукция" @@ -570,27 +594,27 @@ msgstr "Перегрузка не может превысить 100%" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Удалить элемент" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Установите флажок для подтверждения удаления элемента" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Редактировать информацию о пользователе" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Установить пароль" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Пароли должны совпадать" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Информация о системе" @@ -649,15 +673,15 @@ msgstr "Неверный выбор для родительской сборки #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Порядок сборки" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Порядок сборки" msgid "Build Order Reference" msgstr "Ссылка на заказ" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Отсылка" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Детали" @@ -734,8 +760,8 @@ msgstr "Отсылка на заказ" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Расположение источника" @@ -775,21 +801,21 @@ msgstr "Статус сборки" msgid "Build status code" msgstr "Код статуса сборки" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Код партии" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Код партии для этого вывода сборки" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Дата создания" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Целевая дата завершения" @@ -797,8 +823,8 @@ msgstr "Целевая дата завершения" msgid "Target date for build completion. Build will be overdue after this date." msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты." -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Дата завершения" @@ -806,7 +832,7 @@ msgstr "Дата завершения" msgid "completed by" msgstr "выполнено" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Выдал/ла" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Пользователь, выпустивший этот заказ на сборку" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Ответственный" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Пользователь, ответственный за этот заказ сборки" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Внешняя ссылка" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Заметки" @@ -870,73 +897,73 @@ msgstr "Вывод сборки уже завершен" msgid "Build output does not match Build Order" msgstr "Вывод сборки не совпадает с порядком сборки" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "Предмет на складе перераспределен" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Выделенное количество должно быть больше нуля" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "Количество должно быть 1 для сериализованных запасов" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "Выбранная единица хранения не найдена в BOM" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Сборка" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Предметы на складе" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Исходный складской предмет" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Исходный складской предмет" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Количество" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Введите количество для вывода сборки" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Серийные номера" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Введите серийные номера для результатов сборки" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Расположение" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "Статус" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "BOM Компонент" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "Компонент должен быть в наличии" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Целевая дата" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "Просрочено" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Завершённые" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Заказ покупателя" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Назначение" @@ -1320,22 +1360,25 @@ msgstr "Назначение" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "Партия" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Создано" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "Печать" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Приложения" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Заметки сборки" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Новый заказ на сборку" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "Требуется перезапуск" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Название компании" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "Внутреннее название компании" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Базовая ссылка" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "Базовая ссылка для экземпляра сервера" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Валюта по умолчанию" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Валюта по умолчанию" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "Скачать по ссылке" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Разрешить повторяющиеся IPN" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "Разрешить редактирование IPN" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Шаблон" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "По умолчанию детали являются шаблонами" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Сборка" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Компонент" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Можно продавать" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Отслеживание" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Показывать цену в формах" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "Показывать цену в BOM" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "Показывать историю цены" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "Показывать связанные детали" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Режим отладки" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "Необходимо указать EMail" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "Показывать детали, на которые включены уведомления" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "Показывать детали, на которые включены уведомления, на главной странице" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "Показывать категории, на которые включены уведомления" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "Показывать категории, на которые включены уведомления, на главной странице" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Показывать последние детали" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Показывать последние детали на главной странице" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "Показывать непроверенные BOMы" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "Показывать BOMы, ожидающие проверки, на главной странице" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "Показывать изменившиеся складские запасы" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "Показывать низкие складские запасы" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "Показывать закончившиеся детали" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "Показывать закончившиеся на складе единицы хранения на главной странице" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "Показывать требуемые детали" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "Показывать требуемые для сборки единицы хранения на главной странице" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "Показывать просрочку" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "Показывать залежалые" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "Показывать залежалые единицы хранения на главной странице" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "Показывать незавершённые сборки" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "Показывать незавершённые сборки на главной странице" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "Показывать просроченные сборки" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "Показывать просроченные сборки на главной странице" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "Включить уведомления по электронной почте" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "Разрешить отправку уведомлений о событиях по электронной почте" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Цена" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Загрузить файл" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "Детали импортированы" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "Контактное лицо" msgid "Link to external company information" msgstr "Ссылка на описание компании" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Изображение" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Является ли компания производителем деталей?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Валюта" @@ -2589,7 +2652,7 @@ msgstr "Валюта" msgid "Default currency used for this company" msgstr "Для этой компании используется валюта по умолчанию" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Базовая деталь" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Выберите деталь" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Производитель" @@ -2613,13 +2676,13 @@ msgstr "Производитель" msgid "Select manufacturer" msgstr "Выберите производителя" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "Деталь производителя" @@ -2646,8 +2709,8 @@ msgstr "Наименование параметра" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Значение" @@ -2655,10 +2718,10 @@ msgstr "Значение" msgid "Parameter value" msgstr "Значение параметра" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "Ед.изм" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Поставщик" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "Выберите поставщика" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Заметка" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Упаковка" @@ -2733,7 +2796,7 @@ msgstr "Упаковка" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "Компания" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Создать заказ на закупку" @@ -2796,13 +2859,13 @@ msgstr "Загрузить новое изображение" msgid "Download image from URL" msgstr "Скачать изображение по ссылке" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Покупатель" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "Телефон" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "Загрузить изображение" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Создать новую деталь поставщика" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Новая деталь поставщика" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "Настройки" @@ -2869,7 +2932,7 @@ msgstr "Детали производителей" msgid "Create new manufacturer part" msgstr "Создать новую деталь производителя" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "Новая деталь производителя" @@ -2883,10 +2946,10 @@ msgstr "Склад поставщика" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Заказы на закупку" @@ -2906,10 +2969,10 @@ msgstr "Новый заказ на закупку" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Заказы на продажу" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Новый заказ на продажу" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "Заметки о компании" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "Удалить деталь поставщика?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "Все выбранные детали поставщика будут удалены" @@ -2949,83 +3012,83 @@ msgstr "Все выбранные детали поставщика будут msgid "Supplier List" msgstr "Список поставщиков" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Производители" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "Поставщики" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Удалить деталь поставщика" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "Удалить" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Параметры" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "Новый параметр" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "Удалить параметры" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "Добавить параметр" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "Удалить параметры" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "Деталь поставщика" @@ -3074,7 +3137,7 @@ msgstr "Создать единицу хранения" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "Новая единица хранения" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Информация о цене" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "Последнее обновление" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Склад" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Детали на складе" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Новый производитель" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Покупатели" @@ -3186,20 +3252,20 @@ msgstr "Компании" msgid "New Company" msgstr "Новая компания" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Скачать изображение" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "Высота [мм]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Фильтры" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "Отменить заказ" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "Компания, в которой детали заказываются" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "Компания, которой детали продаются" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Заказ на закупку" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Закупочная цена" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "Цена продажи" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "Курс покупки валюты" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "Введите код партии для поступающих единиц хранения" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "Курс продажи валюты" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "Редактировать заказ на закупку" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "В представленных данных присутствуют ошибки" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Выберите деталь поставщика" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Удалить строку" @@ -3789,19 +3876,11 @@ msgstr "Удалить строку" msgid "Return to Orders" msgstr "Вернуться к заказам" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "Шаг %(step)s из %(count)s" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "Отмена этого заказа означает, что заказ msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "Действия" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Место хранения по умолчанию" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "Доступный запас" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "Ключевые слова по умолчанию" msgid "Default keywords for parts in this category" msgstr "Ключевые слова по умолчанию для деталей этой категории" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Детали" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Наименование детали" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "Шаблон" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "Эта деталь является шаблоном для других деталей?" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Эта деталь является разновидностью другой детали?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Разновидность" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Описание детали" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Ключевые слова" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "Ключевые слова для улучшения видимости в результатах поиска" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "Категория" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "Категория" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "Внутренний код детали" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "Версия детали" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Версия" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "Где обычно хранится эта деталь?" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Минимальный запас" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "Минимально допустимый складской запас" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Может ли эта деталь быть создана из других деталей?" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Может ли эта деталь использоваться для создания других деталей?" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Является ли каждый экземпляр этой детали уникальным, обладающим серийным номером?" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Может ли эта деталь быть закуплена у внешних поставщиков?" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Может ли эта деталь быть продана покупателям?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Эта деталь актуальна?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Эта деталь виртуальная, как программный продукт или лицензия?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "Заметки о детали (поддерживается разметка Markdown)" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "Шаблон параметра" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "Артикул или наименование детали" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Артикул" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "Наименование детали" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "IPN" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "Валюта покупки этой единицы хранения" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "Подходящая деталь не найдена" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "Действия с BOM" @@ -4708,7 +4805,7 @@ msgstr "Путь к категории" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Подкатегории" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "Параметры детали" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "Создать категорию деталей" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "Создать деталь" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "Создать ещё одну деталь после этой" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "Деталь создана успешно" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "Импортировать детали" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "Дублировать деталь" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "Разновидности детали" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "Создать новую разновидность" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "Новая разновидность" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Спецификация" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "Экспорт" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Экспорт BOM" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "Сборки" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Поставщики" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "Шаг %(step)s из %(count)s" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "Эта деталь является разновидностью %(link)s" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "На складе" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "Минимальный складской запас" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "Подходящие изображения не найдены" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "Внутренняя цена" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "Разновидности" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Сборки" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "Показать закупочную цену" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "Создать новую разновидность детали" msgid "Create a new variant of template '%(full_name)s'." msgstr "Создать новую разновидность из шаблона '%(full_name)s'." -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "Неизвестная база данных" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "Укажите категорию" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "Изображение детали не найдено" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "Деталь была удалена" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "Редактировать категорию" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "Удалить категорию" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "Категория удалена" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "Автор не найден" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "Дата не найдена" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Название шаблона" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "Файл шаблона отчёта" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Серийный номер" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "Родительская единица хранения" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "Базовая деталь" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Место хранения" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "Код партии для этой единицы хранения" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "Исходная сборка" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "Удалить при обнулении" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "Удалить эту единицу хранения при обнулении складского запаса" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "Заметки о единице хранения" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "Деталь не является отслеживаемой" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "Валюта покупки этой единицы хранения" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Серийные номера уже существуют" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "Дочерние единицы хранения" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "Эта единица хранения не имеет дочерних элементов" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "Установленные единицы хранения" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "Установить единицу хранения" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "Места хранения" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Места хранения" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Доступ запрещён" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "У вас нет прав для просмотра этой страницы." -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "Страница не найдена" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "Внутренняя ошибка сервера" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" -msgstr "Сервер InvenTree вызвал внутреннюю ошибку" - #: 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:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "Настройки" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "Настройки плагинов" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." -msgstr "Изменение настроек ниже требует немедленного перезапуска InvenTree, не изменяйте их до завершения работы." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." +msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,8 +7049,8 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" -msgstr "Этот плагин был найден в локальном пути InvenTree" +msgid "This plugin was found in a local server path" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 msgid "Installation path" @@ -7111,7 +7192,7 @@ msgstr "Настройки склада" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please отправьте новый запрос на подтверждение электронной почты." #: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:39 +#: templates/account/login.html:42 msgid "Sign In" msgstr "" @@ -7441,19 +7522,11 @@ msgid "If you have not created an account yet, then please\n" "sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "Вы получили это письмо, потому что вы подписаны на оповещения об этой детали " -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "Версия InvenTree" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "Ошибка сервера" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "Скачать шаблон BOM" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "Редактировать элемент BOM" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "Удалить элемент BOM" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "Элементы BOM не найдены" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "Вы уверены, что хотите удалить этот элемент BOM?" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "Унаследовано от родительского BOM" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Подтвердите выделение запасов" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "Редактировать деталь производителя" msgid "Delete Manufacturer Part" msgstr "Удалить деталь производителя" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "Добавить поставщика" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "Информация о детали производителя не найдена" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "Деталь-шаблон" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "Параметры не найдены" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "Удалить параметр" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "Удалить параметр" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "Ошибка запроса данных формы" msgid "Company ID" msgstr "Код компании" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "Код склада" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "Код места хранения" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "Код сборки" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "Код заказа" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "Код категории" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "Код детали производителя" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "Код детали поставщика" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "Добавить код партии" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "Заказов на закупку не найдено" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "Общая стоимость" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "Заказы на продажу не найдены" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Подтвердите выделение запасов" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Атрибуты детали" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "Родительская категория" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "Создать разновидность детали" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "Вы подписаны на уведомления для данного элемента" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "Вы подписались на уведомления для данного элемента" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "Включить уведомления для данного элемента" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "Вы отписались от уведомлений для данного элемента" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "Отслеживаемая деталь" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Разновидности не найдены" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "Детали не найдены" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Нет категории" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "Список" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "Таблица" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "Дерево" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "Путь" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "Создано несколько единиц хранения" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "Предупреждение: Операция объединения не может быть отменена" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "Следующие данные будут потеряны в процессе объединения" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "История складских перемещений будет удалена для объединённых элементов" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "Информация о деталях поставщика будет удалена для объединённых элементов" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "Код партии" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "Статус сборки" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "из" msgid "rows" msgstr "строк" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Закупки" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Продажи" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "Права доступа" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "Права доступа" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Вид" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Разрешение на просмотр элементов" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Разрешение на добавление элементов" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Разрешение на редактирование элементов" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Разрешение на удаление элементов" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.mo b/InvenTree/locale/sv/LC_MESSAGES/django.mo deleted file mode 100644 index 7156b00547..0000000000 Binary files a/InvenTree/locale/sv/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index d86be8c8ef..377ef96325 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: sv-SE\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Ogiltigt antal angivet" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Tom serienummersträng" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ogiltig grupp: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Inga serienummer hittades" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Bilaga" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Välj fil att bifoga" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "Kommentar" msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Användare" @@ -194,42 +202,42 @@ msgstr "Fel vid namnbyte av fil" msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Namn" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Beskrivning" @@ -241,7 +249,7 @@ msgstr "Beskrivning (valfritt)" msgid "parent" msgstr "överordnad" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "Tyska" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "Grekiska" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "Engelska" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "Spanska" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "Franska" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "Hebreiska" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 +msgid "German" +msgstr "Tyska" + +#: InvenTree/settings.py:674 +msgid "Greek" +msgstr "Grekiska" + +#: InvenTree/settings.py:675 +msgid "English" +msgstr "Engelska" + +#: InvenTree/settings.py:676 +msgid "Spanish" +msgstr "Spanska" + +#: InvenTree/settings.py:677 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 +msgid "French" +msgstr "Franska" + +#: InvenTree/settings.py:680 +msgid "Hebrew" +msgstr "Hebreiska" + +#: InvenTree/settings.py:681 +msgid "Hungarian" +msgstr "" + +#: InvenTree/settings.py:682 msgid "Italian" msgstr "Italienska" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japanska" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Koreanska" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Nederländska" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norska" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polska" -#: InvenTree/settings.py:679 -msgid "Portugese" +#: InvenTree/settings.py:688 +msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Ryska" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "Svenska" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Thailändska" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Turkiska" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamesiska" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Kinesiska" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InvenTree systemhälsokontroll misslyckades" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Väntar" @@ -400,14 +420,14 @@ msgstr "Väntar" msgid "Placed" msgstr "Placerad" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Slutför" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "Avbruten" @@ -421,14 +441,14 @@ msgstr "Förlorad" msgid "Returned" msgstr "Återlämnad" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Skickad" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -446,91 +466,95 @@ msgstr "Förstörd" msgid "Rejected" msgstr "Avvisad" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.mo b/InvenTree/locale/th/LC_MESSAGES/django.mo deleted file mode 100644 index 17059a4eda..0000000000 Binary files a/InvenTree/locale/th/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index 69deb870fe..ec6c1a301e 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:29\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: th\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "" @@ -194,42 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "" @@ -241,7 +249,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "" @@ -806,7 +832,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "" @@ -2613,11 +2676,11 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.mo b/InvenTree/locale/tr/LC_MESSAGES/django.mo deleted file mode 100644 index 3c37bd7989..0000000000 Binary files a/InvenTree/locale/tr/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index d6d5f7c335..afc3a5a057 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "E-posta adresi onayı" msgid "You must type the same email each time." msgstr "Her seferind eaynı e-posta adresini yazmalısınız." -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "Tekrarlanan seri no:{sn}" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "Geçersiz veri sağlandı" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "Boş seri numarası dizesi" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "Geçersiz grup: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "Geçersiz grup: {group}" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "Seri numarası bulunamadı" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Benzersiz seri numaralarının sayısı ({s}) girilen miktarla eşleşmeli ({q})" @@ -122,7 +130,7 @@ msgstr "Eksik dosya" msgid "Missing external link" msgstr "Bozuk dış bağlantı" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Ek" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "Bağlantı" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "Harici URL'ye bağlantı" @@ -152,12 +160,12 @@ msgstr "Yorum" msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Kullanıcı" @@ -194,42 +202,42 @@ msgstr "Dosya adı değiştirilirken hata" msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "Adı" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Açıklama" @@ -241,7 +249,7 @@ msgstr "Açıklama (isteğe bağlı)" msgid "parent" msgstr "üst" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" @@ -295,87 +303,99 @@ msgstr "Gerekli kolon ismi eksik:'{name}'" msgid "Duplicate column: '{col}'" msgstr "Tekrarlanan kolon ismi:'{col}'" -#: InvenTree/settings.py:665 +#: InvenTree/settings.py:672 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:673 msgid "German" msgstr "Almanca" -#: InvenTree/settings.py:666 +#: InvenTree/settings.py:674 msgid "Greek" msgstr "Yunanca" -#: InvenTree/settings.py:667 +#: InvenTree/settings.py:675 msgid "English" msgstr "İngilizce" -#: InvenTree/settings.py:668 +#: InvenTree/settings.py:676 msgid "Spanish" msgstr "İspanyolca" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:677 msgid "Spanish (Mexican)" msgstr "İspanyolca(Meksika)" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 msgid "French" msgstr "Fransızca" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:680 msgid "Hebrew" msgstr "İbranice" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:681 msgid "Hungarian" msgstr "Macarca" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:682 msgid "Italian" msgstr "İtalyanca" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "Japonca" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "Korece" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "Flemenkçe" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "Norveççe" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "Polonyaca" -#: InvenTree/settings.py:679 -msgid "Portugese" -msgstr "Portekizce" +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "Rusça" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "İsveççe" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "Tay dili" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "Türkçe" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "Vietnamca" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "Çince" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InvenTree sistem sağlık kontrolü başarısız" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "Bekliyor" @@ -400,14 +420,14 @@ msgstr "Bekliyor" msgid "Placed" msgstr "Sipariş verildi" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "Tamamlandı" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "İptal edildi" @@ -421,8 +441,8 @@ msgstr "Kayıp" msgid "Returned" msgstr "İade" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "Sevk edildi" @@ -446,91 +466,95 @@ msgstr "Kullanılamaz durumda" msgid "Rejected" msgstr "Reddedildi" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "Eski stok izleme girişi" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "Stok kalemi oluşturuldu" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "Düzenlenen stok kalemi" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "Atanan seri numarası" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "Stok sayıldı" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "Stok manuel olarak eklendi" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "Stok manuel olarak çıkarıldı" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "Konum değişti" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "Montajda kullanıldı" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "Montajdan çıkarıldı" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "Bileşen ögesinde kullanıldı" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "Bileşen ögesinden çıkarıldı" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "Üst ögeden ayır" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "Alt ögeyi ayır" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "Stok parçalarını birleştir" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "Müşteriye gönderildi" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "Müşteriden geri döndü" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "Yapım emri çıktısı oluşturuldu" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "Yapım emri çıktısı tamamlandı" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "Satın alma emri karşılığında alındı" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "Üretim" @@ -570,27 +594,27 @@ msgstr "Fazlalık %100'ü geçmemelidir" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "Ögeyi Sil" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "Öge silme işlemini onaylamak için kutuyu işaretleyin" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "Kullanıcı Bilgisini Düzenle" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "Şifre Belirle" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "Parola alanları eşleşmelidir" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Sistem Bilgisi" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Yapım İşi Emri" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Yapım İşi Emirleri" msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "Referans" @@ -692,33 +717,34 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Parça" @@ -734,8 +760,8 @@ msgstr "Satış Emri Referansı" msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "Kaynak Konum" @@ -775,21 +801,21 @@ msgstr "Yapım İşi Durumu" msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "Sıra numarası" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "Oluşturulma tarihi" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "Hedef tamamlama tarihi" @@ -797,8 +823,8 @@ msgstr "Hedef tamamlama tarihi" msgid "Target date for build completion. Build will be overdue after this date." msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak." -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Tamamlama tarihi" @@ -806,7 +832,7 @@ msgstr "Tamamlama tarihi" msgid "completed by" msgstr "tamamlayan" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "Veren" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "Bu yapım işi emrini veren kullanıcı" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "Sorumlu" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "Bu yapım işi emrinden sorumlu kullanıcı" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "Harici Bağlantı" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "Notlar" @@ -870,73 +897,73 @@ msgstr "Yapım işi çıktısı zaten tamamlanmış" msgid "Build output does not match Build Order" msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "Seri numaralı stok için miktar bir olmalı" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "Yapım İşi" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "Yapım işi için tahsis edilen parçalar" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "Stok Kalemi" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "Kaynak stok kalemi" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "Kaynak stok kalemi" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "Miktar" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "Hedef stok kalemi" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "Yapım işi çıktısı için miktarını girin" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "Seri Numaraları" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "Yapım işi çıktısı için seri numaraları girin" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "Konum" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "Durum" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "Gerekli stok tamamen tahsis edilemedi" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "Gerekli yapım işi miktarı tamamlanmadı" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "Hedeflenen tarih" @@ -1251,28 +1291,28 @@ msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "Vadesi geçmiş" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Tamamlandı" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "Sipariş Emri" @@ -1311,8 +1351,8 @@ msgstr "Stok Kaynağı" msgid "Stock can be taken from any available location." msgstr "Stok herhangi bir konumdan alınabilir." -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "Hedef" @@ -1320,22 +1360,25 @@ msgstr "Hedef" msgid "Destination location not specified" msgstr "Hedef konumu belirtilmedi" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "Toplu" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "Oluşturuldu" @@ -1355,7 +1398,7 @@ msgstr "Alt Yapım İşi Emrileri" msgid "Allocate Stock to Build" msgstr "Yapım İşi için Stok Tahsis Et" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "Stok tahsisini kaldır" @@ -1448,33 +1491,41 @@ msgstr "Yazdırma İşlemleri" msgid "Print labels" msgstr "Etiketleri yazdır" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "Tamamlanmış Yapım İşi Çıktıları" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Ekler" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "Yeni Yapım İşi Emri" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" -#: common/models.py:689 +#: common/models.py:707 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:693 +#: common/models.py:711 msgid "Use instance name" msgstr "" -#: common/models.py:694 +#: common/models.py:712 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:700 company/models.py:100 company/models.py:101 +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:701 +#: common/models.py:726 msgid "Internal company name" msgstr "" -#: common/models.py:706 +#: common/models.py:731 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:707 +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "Varsayılan para birimi" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "Barkod tarayıcı desteğini etkinleştir" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "Şablon" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "Montaj" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "Bileşen" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Sanal" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "Formlarda Fiyat Göster" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "Test Raporları" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "günler" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "Fiyat" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "Aktif" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Dosya Yükle" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Alanları Eşleştir" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "Resim" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "Bu şirket üretim yapıyor mu?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "Para birimi" @@ -2589,7 +2652,7 @@ msgstr "Para birimi" msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Temel Parça" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "Parça seçin" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Üretici" @@ -2613,11 +2676,11 @@ msgstr "Üretici" msgid "Select manufacturer" msgstr "Üretici seçin" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "ÜPN" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "Parametre adı" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "Değer" @@ -2655,10 +2718,10 @@ msgstr "Değer" msgid "Parameter value" msgstr "Parametre değeri" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Tedarikçi" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "Tedarikçi seçin" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Not" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "temel maliyet" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "Paketleme" @@ -2733,7 +2796,7 @@ msgstr "Paketleme" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "çoklu" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "Satın Alma Emri Oluştur" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "Müşteri" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "Yeni tedarikçi parçası oluştur" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "Yeni Tedarikçi Parçası" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "Tedarikçi Stoku" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "Satın Alma Emirleri" @@ -2906,10 +2969,10 @@ msgstr "Yeni Satın Alma Emri" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "Satış Emirleri" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "Yeni Satış Emri" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "Atanan Stok" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "Üreticiler" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "Parça siparişi" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "Tedarikçi parçalarını sil" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "Tedarikçi Parçası" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "Fiyat Bilgisi" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Stok" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "Tedarikçi Parçası Fiyatlandırması" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "Fiyatlandırma" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "Stok Kalemleri" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "Yeni Üretici" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "Müşteriler" @@ -3186,20 +3252,20 @@ msgstr "Şirketler" msgid "New Company" msgstr "Yeni Şirket" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "Resmi İndirin" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "Geçersiz yanıt: {code}" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" @@ -3223,7 +3289,7 @@ msgstr "Etiket" msgid "Label template file" msgstr "Etiket şablon listesi" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "Etkin" @@ -3247,7 +3313,7 @@ msgstr "Yükseklik [mm]" msgid "Label height, specified in mm" msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "Dosya Adı Deseni" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "Filtreler" @@ -3285,374 +3351,392 @@ msgstr "Siparişi tamamlandı olarak işaretle" msgid "Cancel order" msgstr "Siparişi iptal et" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "Sipariş açıklaması" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "Harici sayfaya bağlantı" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "Oluşturan" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "Sipariş notları" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "Sipariş referansı" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "Seri numaralı stok kalemi için miktar bir olmalı" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "Stok tahsis miktarını girin" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "Tedarikçi Parçası Seçin" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "Sipariş Emri için Dosya Yükle" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "Ürünler" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "Sipariş Notları" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "İşlemler" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "Varsayılan Konum" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "Parça Kategorileri" @@ -4138,9 +4232,8 @@ msgstr "Parça Kategorileri" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Parçalar" @@ -4165,466 +4258,470 @@ msgstr "Sonraki müsait seri numarası" msgid "Most recent serial number is" msgstr "En son seri numarası" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "Parça adı" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "Şablon Mu" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "Bu parça başka bir parçanın çeşidi mi?" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "Çeşidi" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "Parça açıklaması" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "Anahtar kelimeler" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "DPN" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "Revizyon" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "Minimum Stok" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "Bu parça aktif mi?" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "Oluşturan Kullanıcı" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "Gerekli" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alt kategoriler" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "Parça Test Şablonları" msgid "Add Test Template" msgstr "Test Şablonu Ekle" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "Parça Çeşitleri" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "Yeni çeşit oluştur" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "Yeni Çeşit" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "Parça Tedarikçileri" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "Aşağıdaki gerekli sütunlar için eksik seçimler" #: 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 "" #: 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 "Dosya Alanları" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "Pasif" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "Bu parça %(link)s parçasının bir çeşididir" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "Yapım İşi Emirleri için Gerekli" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "Satış Emirleri için Gerekli" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "Son Seri Numarası" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "Hesapla" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "Birim Maliyeti" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "Toplam Maliyet" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "Bu parçası için tanımlanmış %(count)s tedarikçi bulunmaktadır. B msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "Aşağıdaki parçalara kategori ayarla" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "Stok Yok" @@ -5432,103 +5512,96 @@ msgstr "Yeni parça çeşidi oluştur" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "Hiçbiri" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "Parça Parametre Şablonu Oluştur" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "Parça Parametre Şablonu Düzenle" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "Parça Parametre Şablonu Sil" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "Kategori Parametre Şablonu Oluştur" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "Kategori Parametre Şablonu Düzenle" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "Kategori Parametre Şablonu Sil" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "Şablon adı" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "Rapor şablon dosyası" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "Rapor şablon tanımı" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "Revizyon numarası raporla (otomatik artış)" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "Rapor şablonu etkin" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "Seri Numara" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "Seri No" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "Bu seri numarasına sahip stok kalemi zaten var" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "Bu stok kalemi için tedarikçi parçası seçin" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Stok Konumu" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seri numaraları zaten mevcut: {exists}" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "Konum ayarlanmadı" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "Alt konumlar" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "Stok Konumları" @@ -6551,11 +6623,11 @@ msgstr "Bu işlem kolayca geri alınamaz" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "Stok konumunu düzenle" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "Sahip gerekli (sahip kontrolü etkinleştirildi)" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "Stok ayarlamasını onayla" @@ -6603,79 +6675,80 @@ msgstr "Stok ayarlamasını onayla" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "Yeni Stok konumu oluştur" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "Stok Konumunu Sil" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "Yapım İşi Emirleri için Gerekli" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Mevcut" @@ -7642,10 +7715,6 @@ msgstr "Mevcut" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "Stok Kalemlerini bu konuma kaydet" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "Stok kalemi zaten bu konumda" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "Konuma Kaydet" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "Barkod geçerli bir konumla eşleşmiyor" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "Gerekli Parça" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "Tamamlanmış Yapım İşi Emri" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "Stok tahsisini düzenle" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "Stok tahsisini sil" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Parçaları Seçin" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "Stok tahsisini onayla" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "Şablon Parça" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "Stok tahsisini onayla" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "Silme İşlemini Onayla" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "Seri numaralarını tahsis et" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "Seri Numaralarını Tahsis Et" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "Çeşit bulunamadı" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "Katagori Yok" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "Sorgu ile eşleşen test şablonu bulunamadı" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "Stok konumu ayarlanmadı" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "Detaylar" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "Konum artık yok" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "Konumları dahil et" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "Seri numarası" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "Alt kategorilerdeki parçaları dahil et" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "DPN Var" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "yüzünden" msgid "rows" msgstr "satırlar" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "Sütunlar" msgid "All" msgstr "Tümü" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Al" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Sat" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "Bildirimleri Göster" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "Yeni Bildirimler" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Çıkış" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "Giriş" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "InvenTree Hakkında" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "InvenTree Demo modu" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "Yetkiler" msgid "Important dates" msgstr "Önemli tarihler" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "İzinleri ayarla" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "Grup" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "Görünüm" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "Parçayı görüntüleme izni" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "Parça ekleme izni" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "Değiştir" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "Parçaları düzenleme izni" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "Parçaları silme izni" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.mo b/InvenTree/locale/vi/LC_MESSAGES/django.mo deleted file mode 100644 index 5123025e2e..0000000000 Binary files a/InvenTree/locale/vi/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index eb9bbb16f5..65f7268b1b 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: vi\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -122,7 +130,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "" @@ -152,12 +160,12 @@ msgstr "Bình luận" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "Người dùng" @@ -194,42 +202,42 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "Mô tả" @@ -241,7 +249,7 @@ msgstr "Mô tả (tùy chọn)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 -msgid "Italian" +msgid "German" msgstr "" #: InvenTree/settings.py:674 -msgid "Japanese" +msgid "Greek" msgstr "" #: InvenTree/settings.py:675 -msgid "Korean" +msgid "English" msgstr "" #: InvenTree/settings.py:676 -msgid "Dutch" +msgid "Spanish" msgstr "" #: InvenTree/settings.py:677 -msgid "Norwegian" +msgid "Spanish (Mexican)" msgstr "" #: InvenTree/settings.py:678 -msgid "Polish" +msgid "Farsi / Persian" msgstr "" #: InvenTree/settings.py:679 -msgid "Portugese" +msgid "French" msgstr "" #: InvenTree/settings.py:680 -msgid "Russian" +msgid "Hebrew" msgstr "" #: InvenTree/settings.py:681 -msgid "Swedish" +msgid "Hungarian" msgstr "" #: InvenTree/settings.py:682 -msgid "Thai" +msgid "Italian" msgstr "" #: InvenTree/settings.py:683 -msgid "Turkish" +msgid "Japanese" msgstr "" #: InvenTree/settings.py:684 -msgid "Vietnamese" +msgid "Korean" msgstr "" #: InvenTree/settings.py:685 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:686 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:687 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:688 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:691 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:692 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:693 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:694 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" @@ -400,14 +420,14 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "" @@ -421,8 +441,8 @@ msgstr "" msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "" @@ -446,91 +466,95 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "" @@ -570,27 +594,27 @@ msgstr "" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "Thông tin hệ thống" @@ -649,15 +673,15 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "Tạo đơn hàng" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "Tạo đơn hàng" msgid "Build Order Reference" msgstr "" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "" @@ -692,33 +717,34 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "Nguyên liệu" @@ -734,8 +760,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "" @@ -775,21 +801,21 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "" @@ -797,8 +823,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "Ngày hoàn thành" @@ -806,7 +832,7 @@ msgstr "Ngày hoàn thành" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "" @@ -870,73 +897,73 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "Trạng thái" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "" @@ -1251,28 +1291,28 @@ msgstr "" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "Đã hoàn thành" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "" @@ -1355,7 +1398,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "" @@ -1448,33 +1491,41 @@ msgstr "" msgid "Print labels" msgstr "" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "" @@ -2589,7 +2652,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "Nhà sản xuất" @@ -2613,11 +2676,11 @@ msgstr "Nhà sản xuất" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" msgstr "" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "" @@ -2646,8 +2709,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "" @@ -2655,10 +2718,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "Nhà cung cấp" @@ -2687,8 +2750,8 @@ msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" msgstr "" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "" @@ -2733,7 +2796,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "" @@ -2796,13 +2859,13 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "" @@ -2869,7 +2932,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "" @@ -2883,10 +2946,10 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "" @@ -2906,10 +2969,10 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2949,83 +3012,83 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "Kiện hàng" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "" @@ -3186,20 +3252,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3223,7 +3289,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "" @@ -3247,7 +3313,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "Đơn hàng" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "Giá mua" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "" #: 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" @@ -3775,12 +3863,11 @@ msgstr "" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3789,19 +3876,11 @@ msgstr "" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "" @@ -4138,9 +4232,8 @@ msgstr "" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "Nguyên liệu" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" @@ -4745,23 +4842,23 @@ msgstr "" msgid "Export Data" msgstr "" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "" @@ -5112,13 +5210,13 @@ msgstr "" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "Số seri mới nhất" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Kho hàng" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "Cài đặt" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "Quản trị" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7642,10 +7715,6 @@ msgstr "" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "Số seri mới nhất" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "Mua" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "Bán" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "Đăng xuất" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "Giới thiệu" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.mo b/InvenTree/locale/zh/LC_MESSAGES/django.mo deleted file mode 100644 index ca6e3887e3..0000000000 Binary files a/InvenTree/locale/zh/LC_MESSAGES/django.mo and /dev/null differ diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index e2f163a10b..41ce90240a 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -1,10 +1,9 @@ -#: templates/js/translated/order.js:2170 msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-12 21:44+0000\n" -"PO-Revision-Date: 2022-04-12 21:46\n" +"POT-Creation-Date: 2022-05-01 14:04+0000\n" +"PO-Revision-Date: 2022-05-01 23:28\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -16,7 +15,7 @@ msgstr "" "X-Crowdin-Project-ID: 452300\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" -"X-Crowdin-File-ID: 138\n" +"X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:57 msgid "API endpoint not found" @@ -80,36 +79,45 @@ msgstr "Email 地址确认" msgid "You must type the same email each time." msgstr "您必须输入相同的 Email 。" -#: InvenTree/helpers.py:442 +#: InvenTree/helpers.py:449 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:449 order/models.py:282 order/models.py:435 -#: stock/views.py:983 +#: InvenTree/helpers.py:456 order/models.py:306 order/models.py:459 +#: stock/views.py:993 msgid "Invalid quantity provided" msgstr "提供的数量无效" -#: InvenTree/helpers.py:452 +#: InvenTree/helpers.py:459 msgid "Empty serial number string" msgstr "空序列号字符串" -#: InvenTree/helpers.py:474 InvenTree/helpers.py:477 InvenTree/helpers.py:480 -#: InvenTree/helpers.py:504 +#: InvenTree/helpers.py:491 +#, python-brace-format +msgid "Invalid group range: {g}" +msgstr "" + +#: InvenTree/helpers.py:494 #, python-brace-format msgid "Invalid group: {g}" msgstr "无效的群组: {g}" -#: InvenTree/helpers.py:518 +#: InvenTree/helpers.py:522 +#, python-brace-format +msgid "Invalid group sequence: {g}" +msgstr "" + +#: InvenTree/helpers.py:530 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:524 +#: InvenTree/helpers.py:536 msgid "No serial numbers found" msgstr "未找到序列号" -#: InvenTree/helpers.py:528 +#: InvenTree/helpers.py:540 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" @@ -122,7 +130,7 @@ msgstr "缺少文件" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2138 +#: InvenTree/models.py:197 stock/models.py:2202 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "附件" @@ -132,15 +140,15 @@ msgid "Select file to attach" msgstr "选择附件" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:868 +#: company/models.py:564 order/models.py:132 part/models.py:873 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1419 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1441 msgid "Link" msgstr "链接" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 -#: stock/models.py:633 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:874 +#: stock/models.py:669 msgid "Link to external URL" msgstr "链接到外部 URL" @@ -152,12 +160,12 @@ msgstr "注释" msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1396 -#: common/models.py:1397 common/models.py:1618 common/models.py:1619 -#: common/models.py:1848 common/models.py:1849 part/models.py:2345 -#: part/models.py:2365 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1456 +#: common/models.py:1457 common/models.py:1678 common/models.py:1679 +#: common/models.py:1908 common/models.py:1909 part/models.py:2374 +#: part/models.py:2394 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2467 +#: templates/js/translated/stock.js:2517 msgid "User" msgstr "用户" @@ -194,42 +202,42 @@ msgstr "重命名文件出错" msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1604 -#: company/models.py:415 label/models.py:112 part/models.py:812 -#: part/models.py:2529 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1664 +#: company/models.py:415 label/models.py:112 part/models.py:817 +#: part/models.py:2558 plugin/models.py:40 report/models.py:177 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 -#: templates/InvenTree/settings/plugin.html:48 -#: templates/InvenTree/settings/plugin.html:125 +#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:320 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:606 -#: templates/js/translated/part.js:745 templates/js/translated/part.js:1726 -#: templates/js/translated/stock.js:2267 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:615 +#: templates/js/translated/part.js:767 templates/js/translated/part.js:1748 +#: templates/js/translated/stock.js:2287 msgid "Name" msgstr "名称" #: InvenTree/models.py:349 build/models.py:209 #: build/templates/build/detail.html:24 company/models.py:354 #: company/models.py:570 company/templates/company/company_base.html:68 -#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/manufacturer_part.html:77 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 +#: order/models.py:130 part/models.py:840 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:194 -#: report/models.py:553 report/models.py:592 +#: part/templates/part/set_category.html:14 report/models.py:190 +#: report/models.py:555 report/models.py:594 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:94 #: templates/InvenTree/settings/plugin_settings.html:33 -#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:2007 templates/js/translated/company.js:345 +#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:790 +#: templates/js/translated/build.js:2358 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 -#: templates/js/translated/company.js:840 templates/js/translated/order.js:971 -#: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:665 templates/js/translated/part.js:1060 -#: templates/js/translated/part.js:1333 templates/js/translated/part.js:1745 -#: templates/js/translated/part.js:1814 templates/js/translated/stock.js:1665 -#: templates/js/translated/stock.js:2279 templates/js/translated/stock.js:2317 +#: templates/js/translated/company.js:840 templates/js/translated/order.js:997 +#: templates/js/translated/order.js:1218 templates/js/translated/order.js:1700 +#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082 +#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1767 +#: templates/js/translated/part.js:1836 templates/js/translated/stock.js:1685 +#: templates/js/translated/stock.js:2299 templates/js/translated/stock.js:2354 msgid "Description" msgstr "描述信息" @@ -241,7 +249,7 @@ msgstr "描述 (可选)" msgid "parent" msgstr "上级项" -#: InvenTree/serializers.py:65 part/models.py:2848 +#: InvenTree/serializers.py:65 part/models.py:2891 msgid "Must be a valid number" msgstr "必须是有效数字" @@ -295,87 +303,99 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:665 -msgid "German" -msgstr "德语" - -#: InvenTree/settings.py:666 -msgid "Greek" -msgstr "希腊语" - -#: InvenTree/settings.py:667 -msgid "English" -msgstr "英语" - -#: InvenTree/settings.py:668 -msgid "Spanish" -msgstr "西班牙语" - -#: InvenTree/settings.py:669 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:670 -msgid "French" -msgstr "法语" - -#: InvenTree/settings.py:671 -msgid "Hebrew" -msgstr "希伯来语" - #: InvenTree/settings.py:672 -msgid "Hungarian" +msgid "Czech" msgstr "" #: InvenTree/settings.py:673 +msgid "German" +msgstr "德语" + +#: InvenTree/settings.py:674 +msgid "Greek" +msgstr "希腊语" + +#: InvenTree/settings.py:675 +msgid "English" +msgstr "英语" + +#: InvenTree/settings.py:676 +msgid "Spanish" +msgstr "西班牙语" + +#: InvenTree/settings.py:677 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/settings.py:678 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:679 +msgid "French" +msgstr "法语" + +#: InvenTree/settings.py:680 +msgid "Hebrew" +msgstr "希伯来语" + +#: InvenTree/settings.py:681 +msgid "Hungarian" +msgstr "" + +#: InvenTree/settings.py:682 msgid "Italian" msgstr "意大利语" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:683 msgid "Japanese" msgstr "日语" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:684 msgid "Korean" msgstr "韩语" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:685 msgid "Dutch" msgstr "荷兰语" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:686 msgid "Norwegian" msgstr "挪威语" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:687 msgid "Polish" msgstr "波兰语" -#: InvenTree/settings.py:679 -msgid "Portugese" +#: InvenTree/settings.py:688 +msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:689 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:690 msgid "Russian" msgstr "俄语" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:691 msgid "Swedish" msgstr "瑞典语" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:692 msgid "Thai" msgstr "泰语" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:693 msgid "Turkish" msgstr "土耳其语" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:694 msgid "Vietnamese" msgstr "越南语" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:695 msgid "Chinese" msgstr "中文(简体)" @@ -392,7 +412,7 @@ msgid "InvenTree system health checks failed" msgstr "InventTree系统健康检查失败" #: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 -#: InvenTree/status_codes.py:318 templates/js/translated/table_filters.js:308 +#: InvenTree/status_codes.py:323 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "待定" @@ -400,14 +420,14 @@ msgstr "待定" msgid "Placed" msgstr "已添加" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:321 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:326 #: order/templates/order/order_base.html:128 #: order/templates/order/sales_order_base.html:132 msgid "Complete" msgstr "完成" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:325 msgid "Cancelled" msgstr "已取消" @@ -421,14 +441,14 @@ msgstr "丢失" msgid "Returned" msgstr "已退回" -#: InvenTree/status_codes.py:143 order/models.py:997 -#: templates/js/translated/order.js:2177 templates/js/translated/order.js:2474 +#: InvenTree/status_codes.py:143 order/models.py:1066 +#: templates/js/translated/order.js:2423 templates/js/translated/order.js:2740 msgid "Shipped" msgstr "已发货" #: InvenTree/status_codes.py:183 msgid "OK" -msgstr "OK" +msgstr "" #: InvenTree/status_codes.py:184 msgid "Attention needed" @@ -444,93 +464,97 @@ msgstr "已销毁" #: InvenTree/status_codes.py:188 msgid "Rejected" -msgstr "Rejected" +msgstr "" -#: InvenTree/status_codes.py:273 +#: InvenTree/status_codes.py:276 msgid "Legacy stock tracking entry" msgstr "旧库存跟踪条目" -#: InvenTree/status_codes.py:275 +#: InvenTree/status_codes.py:278 msgid "Stock item created" msgstr "库存项已创建" -#: InvenTree/status_codes.py:277 +#: InvenTree/status_codes.py:280 msgid "Edited stock item" msgstr "已编辑库存项" -#: InvenTree/status_codes.py:278 +#: InvenTree/status_codes.py:281 msgid "Assigned serial number" msgstr "已分配序列号" -#: InvenTree/status_codes.py:280 +#: InvenTree/status_codes.py:283 msgid "Stock counted" msgstr "库存计数" -#: InvenTree/status_codes.py:281 +#: InvenTree/status_codes.py:284 msgid "Stock manually added" msgstr "已手动添加库存" -#: InvenTree/status_codes.py:282 +#: InvenTree/status_codes.py:285 msgid "Stock manually removed" msgstr "库存手动删除" -#: InvenTree/status_codes.py:284 +#: InvenTree/status_codes.py:287 msgid "Location changed" msgstr "仓储地点已更改" -#: InvenTree/status_codes.py:286 +#: InvenTree/status_codes.py:289 msgid "Installed into assembly" msgstr "安装到组装中" -#: InvenTree/status_codes.py:287 +#: InvenTree/status_codes.py:290 msgid "Removed from assembly" msgstr "已从组装中删除" -#: InvenTree/status_codes.py:289 +#: InvenTree/status_codes.py:292 msgid "Installed component item" msgstr "已安装组件项" -#: InvenTree/status_codes.py:290 +#: InvenTree/status_codes.py:293 msgid "Removed component item" msgstr "已删除组件项" -#: InvenTree/status_codes.py:292 +#: InvenTree/status_codes.py:295 msgid "Split from parent item" msgstr "从父项拆分" -#: InvenTree/status_codes.py:293 +#: InvenTree/status_codes.py:296 msgid "Split child item" msgstr "拆分子项" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2005 +#: InvenTree/status_codes.py:298 templates/js/translated/stock.js:2025 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:297 templates/js/translated/table_filters.js:213 +#: InvenTree/status_codes.py:300 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:302 templates/js/translated/table_filters.js:213 msgid "Sent to customer" msgstr "发送给客户" -#: InvenTree/status_codes.py:298 +#: InvenTree/status_codes.py:303 msgid "Returned from customer" msgstr "从客户退货" -#: InvenTree/status_codes.py:300 +#: InvenTree/status_codes.py:305 msgid "Build order output created" msgstr "已创建生产订单输出" -#: InvenTree/status_codes.py:301 +#: InvenTree/status_codes.py:306 msgid "Build order output completed" msgstr "生产订单输出已完成" -#: InvenTree/status_codes.py:302 +#: InvenTree/status_codes.py:307 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:304 +#: InvenTree/status_codes.py:309 msgid "Received against purchase order" msgstr "收到定购单" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:324 msgid "Production" msgstr "生产中" @@ -570,27 +594,27 @@ msgstr "备损不能超过 100%" msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:538 +#: InvenTree/views.py:537 msgid "Delete Item" msgstr "删除项" -#: InvenTree/views.py:587 +#: InvenTree/views.py:586 msgid "Check box to confirm item deletion" msgstr "选中方框以确认项目删除" -#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21 +#: InvenTree/views.py:601 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "编辑用户信息" -#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:612 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "设置密码" -#: InvenTree/views.py:632 +#: InvenTree/views.py:631 msgid "Password fields must match" msgstr "密码字段必须相匹配。" -#: InvenTree/views.py:883 templates/navbar.html:144 +#: InvenTree/views.py:882 templates/navbar.html:152 msgid "System Information" msgstr "系统信息" @@ -649,15 +673,15 @@ msgstr "上级生产选项无效" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 +#: templates/js/translated/build.js:683 msgid "Build Order" msgstr "生产订单" #: build/models.py:140 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:91 +#: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:23 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 #: templates/InvenTree/settings/sidebar.html:45 users/models.py:44 msgid "Build Orders" @@ -667,13 +691,14 @@ msgstr "生产订单" msgid "Build Order Reference" msgstr "相关生产订单" -#: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2759 +#: build/models.py:201 order/models.py:237 order/models.py:587 +#: order/models.py:867 part/models.py:2802 #: part/templates/part/upload_bom.html:54 -#: report/templates/report/inventree_po_report.html:92 +#: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1415 -#: templates/js/translated/order.js:1223 templates/js/translated/order.js:2341 +#: templates/js/translated/bom.js:797 templates/js/translated/build.js:1744 +#: templates/js/translated/order.js:1249 templates/js/translated/order.js:1450 +#: templates/js/translated/order.js:2607 templates/js/translated/order.js:3085 msgid "Reference" msgstr "引用" @@ -692,33 +717,34 @@ msgstr "此次生产匹配的订单" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:29 company/models.py:706 -#: order/models.py:912 order/models.py:986 +#: order/models.py:966 order/models.py:1055 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 -#: part/models.py:2291 part/models.py:2307 part/models.py:2326 -#: part/models.py:2343 part/models.py:2445 part/models.py:2567 -#: part/models.py:2657 part/models.py:2734 part/models.py:3024 -#: part/serializers.py:834 part/templates/part/part_app_base.html:8 +#: part/models.py:2320 part/models.py:2336 part/models.py:2355 +#: part/models.py:2372 part/models.py:2474 part/models.py:2596 +#: part/models.py:2686 part/models.py:2777 part/models.py:3067 +#: part/serializers.py:922 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 #: report/templates/report/inventree_build_order_base.html:110 -#: report/templates/report/inventree_po_report.html:90 +#: report/templates/report/inventree_po_report.html:89 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:80 #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 -#: templates/js/translated/barcode.js:382 templates/js/translated/bom.js:551 -#: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1284 templates/js/translated/build.js:1699 -#: templates/js/translated/build.js:2012 templates/js/translated/company.js:492 -#: templates/js/translated/company.js:749 templates/js/translated/order.js:84 -#: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 -#: templates/js/translated/order.js:1781 templates/js/translated/order.js:2130 -#: templates/js/translated/order.js:2325 templates/js/translated/part.js:1045 -#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1311 -#: templates/js/translated/stock.js:527 templates/js/translated/stock.js:692 -#: templates/js/translated/stock.js:899 templates/js/translated/stock.js:1622 -#: templates/js/translated/stock.js:2542 templates/js/translated/stock.js:2641 +#: templates/js/translated/barcode.js:436 templates/js/translated/bom.js:551 +#: templates/js/translated/bom.js:744 templates/js/translated/build.js:1113 +#: templates/js/translated/build.js:1614 templates/js/translated/build.js:2050 +#: templates/js/translated/build.js:2363 templates/js/translated/company.js:492 +#: templates/js/translated/company.js:749 templates/js/translated/order.js:88 +#: templates/js/translated/order.js:737 templates/js/translated/order.js:1203 +#: templates/js/translated/order.js:2027 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:2591 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1137 templates/js/translated/part.js:1333 +#: templates/js/translated/stock.js:530 templates/js/translated/stock.js:695 +#: templates/js/translated/stock.js:902 templates/js/translated/stock.js:1642 +#: templates/js/translated/stock.js:2380 templates/js/translated/stock.js:2575 +#: templates/js/translated/stock.js:2675 msgid "Part" msgstr "商品" @@ -734,8 +760,8 @@ msgstr "相关销售订单" msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:249 build/serializers.py:730 -#: templates/js/translated/build.js:1687 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:748 +#: templates/js/translated/build.js:2038 templates/js/translated/order.js:2015 msgid "Source Location" msgstr "来源地点" @@ -775,21 +801,21 @@ msgstr "生产状态" msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:637 templates/js/translated/order.js:573 +#: build/models.py:287 build/serializers.py:223 order/serializers.py:340 +#: stock/models.py:673 templates/js/translated/order.js:599 msgid "Batch Code" msgstr "批量代码" -#: build/models.py:291 build/serializers.py:219 +#: build/models.py:291 build/serializers.py:224 msgid "Batch code for this build output" msgstr "此生产产出的批量代码" -#: build/models.py:294 order/models.py:129 part/models.py:1007 -#: part/templates/part/part_base.html:333 templates/js/translated/order.js:1467 +#: build/models.py:294 order/models.py:134 part/models.py:1012 +#: part/templates/part/part_base.html:305 templates/js/translated/order.js:1713 msgid "Creation Date" msgstr "创建日期" -#: build/models.py:298 order/models.py:585 +#: build/models.py:298 order/models.py:609 msgid "Target completion date" msgstr "预计完成日期" @@ -797,8 +823,8 @@ msgstr "预计完成日期" msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" -#: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2089 +#: build/models.py:302 order/models.py:279 +#: templates/js/translated/build.js:2440 msgid "Completion Date" msgstr "完成日期:" @@ -806,7 +832,7 @@ msgstr "完成日期:" msgid "completed by" msgstr "完成人" -#: build/models.py:316 templates/js/translated/build.js:2057 +#: build/models.py:316 templates/js/translated/build.js:2408 msgid "Issued by" msgstr "发布者" @@ -815,11 +841,11 @@ msgid "User who issued this build order" msgstr "发布此生产订单的用户" #: build/models.py:325 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:143 +#: build/templates/build/detail.html:115 order/models.py:148 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1011 +#: order/templates/order/sales_order_base.html:182 part/models.py:1016 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2069 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2420 templates/js/translated/order.js:1031 msgid "Responsible" msgstr "责任人" @@ -828,29 +854,30 @@ msgid "User responsible for this build order" msgstr "负责此生产订单的用户" #: build/models.py:331 build/templates/build/detail.html:101 -#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/manufacturer_part.html:103 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:374 stock/models.py:631 +#: part/templates/part/part_base.html:346 stock/models.py:667 #: stock/templates/stock/item_base.html:357 msgid "External Link" msgstr "外部链接" -#: build/models.py:336 build/serializers.py:381 +#: build/models.py:336 build/serializers.py:394 #: build/templates/build/sidebar.html:21 company/models.py:142 #: company/models.py:577 company/templates/company/sidebar.html:25 -#: order/models.py:147 order/models.py:845 order/models.py:1107 +#: order/models.py:152 order/models.py:869 order/models.py:1176 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:996 -#: part/templates/part/part_sidebar.html:60 +#: order/templates/order/so_sidebar.html:17 part/models.py:1001 +#: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 -#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:740 +#: stock/models.py:2102 stock/models.py:2208 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:944 -#: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 -#: templates/js/translated/order.js:1650 templates/js/translated/order.js:2499 -#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1901 +#: templates/js/translated/barcode.js:101 templates/js/translated/bom.js:983 +#: templates/js/translated/company.js:845 templates/js/translated/order.js:1370 +#: templates/js/translated/order.js:1521 templates/js/translated/order.js:1896 +#: templates/js/translated/order.js:2765 templates/js/translated/order.js:3156 +#: templates/js/translated/stock.js:1316 templates/js/translated/stock.js:1921 msgid "Notes" msgstr "备注" @@ -870,73 +897,73 @@ msgstr "生产产出已完成" msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:1168 +#: build/models.py:1171 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1177 +#: build/models.py:1180 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1187 +#: build/models.py:1190 msgid "Stock item is over-allocated" msgstr "库存物品分配过度!" -#: build/models.py:1193 order/models.py:1225 +#: build/models.py:1196 order/models.py:1309 msgid "Allocation quantity must be greater than zero" msgstr "分配数量必须大于0" -#: build/models.py:1199 +#: build/models.py:1202 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1256 +#: build/models.py:1259 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1325 stock/templates/stock/item_base.html:329 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1985 -#: templates/navbar.html:35 +#: build/models.py:1333 stock/templates/stock/item_base.html:329 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2336 +#: templates/navbar.html:38 msgid "Build" msgstr "生产" -#: build/models.py:1326 +#: build/models.py:1334 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 -#: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 +#: build/models.py:1350 build/serializers.py:589 order/serializers.py:853 +#: order/serializers.py:871 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:351 -#: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1701 templates/js/translated/build.js:2137 -#: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 -#: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 -#: templates/js/translated/order.js:2137 templates/js/translated/order.js:2227 -#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 -#: templates/js/translated/stock.js:2403 +#: templates/js/translated/build.js:694 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:2052 templates/js/translated/build.js:2488 +#: templates/js/translated/order.js:89 templates/js/translated/order.js:2028 +#: templates/js/translated/order.js:2283 templates/js/translated/order.js:2288 +#: templates/js/translated/order.js:2383 templates/js/translated/order.js:2473 +#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696 +#: templates/js/translated/stock.js:2453 msgid "Stock Item" msgstr "库存项" -#: build/models.py:1343 +#: build/models.py:1351 msgid "Source stock item" msgstr "源库存项" -#: build/models.py:1355 build/serializers.py:188 +#: build/models.py:1363 build/serializers.py:193 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1429 +#: build/templates/build/detail.html:34 common/models.py:1489 #: company/forms.py:42 company/templates/company/supplier_part.html:251 -#: order/models.py:836 order/models.py:1265 order/serializers.py:903 +#: order/models.py:860 order/models.py:1349 order/serializers.py:973 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2750 -#: part/templates/part/detail.html:965 part/templates/part/detail.html:1051 +#: part/forms.py:160 part/forms.py:176 part/models.py:2793 +#: part/templates/part/detail.html:964 part/templates/part/detail.html:1050 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 -#: report/templates/report/inventree_po_report.html:91 +#: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 @@ -944,37 +971,38 @@ msgstr "源库存项" #: stock/templates/stock/item_base.html:181 #: stock/templates/stock/item_base.html:246 #: stock/templates/stock/item_base.html:254 -#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:778 -#: templates/js/translated/build.js:376 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1311 -#: templates/js/translated/build.js:1702 -#: templates/js/translated/model_renderers.js:107 -#: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:2056 -#: templates/js/translated/order.js:2144 templates/js/translated/order.js:2233 -#: templates/js/translated/order.js:2347 templates/js/translated/part.js:945 -#: templates/js/translated/part.js:1957 templates/js/translated/part.js:2179 -#: templates/js/translated/part.js:2213 templates/js/translated/part.js:2291 -#: templates/js/translated/stock.js:399 templates/js/translated/stock.js:553 -#: templates/js/translated/stock.js:723 templates/js/translated/stock.js:2452 -#: templates/js/translated/stock.js:2554 +#: templates/js/translated/barcode.js:438 templates/js/translated/bom.js:805 +#: templates/js/translated/build.js:378 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:721 templates/js/translated/build.js:1135 +#: templates/js/translated/build.js:1640 templates/js/translated/build.js:2053 +#: templates/js/translated/model_renderers.js:108 +#: templates/js/translated/order.js:105 templates/js/translated/order.js:1255 +#: templates/js/translated/order.js:1456 templates/js/translated/order.js:2029 +#: templates/js/translated/order.js:2302 templates/js/translated/order.js:2390 +#: templates/js/translated/order.js:2479 templates/js/translated/order.js:2613 +#: templates/js/translated/order.js:3091 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1981 templates/js/translated/part.js:2212 +#: templates/js/translated/part.js:2246 templates/js/translated/part.js:2324 +#: templates/js/translated/stock.js:402 templates/js/translated/stock.js:556 +#: templates/js/translated/stock.js:726 templates/js/translated/stock.js:2502 +#: templates/js/translated/stock.js:2587 msgid "Quantity" msgstr "数量" -#: build/models.py:1356 +#: build/models.py:1364 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1364 +#: build/models.py:1372 msgid "Install into" msgstr "安装到" -#: build/models.py:1365 +#: build/models.py:1373 msgid "Destination stock item" msgstr "" -#: build/serializers.py:138 build/serializers.py:605 +#: build/serializers.py:138 build/serializers.py:618 +#: templates/js/translated/build.js:1123 msgid "Build Output" msgstr "" @@ -990,178 +1018,190 @@ msgstr "" msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:169 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:189 +#: build/serializers.py:194 msgid "Enter quantity for build output" msgstr "输入生产产出数量" -#: build/serializers.py:201 build/serializers.py:596 order/models.py:280 -#: order/serializers.py:267 part/serializers.py:556 part/serializers.py:1001 -#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 +#: build/serializers.py:206 build/serializers.py:609 order/models.py:304 +#: order/serializers.py:335 part/serializers.py:593 part/serializers.py:1089 +#: stock/models.py:507 stock/models.py:1311 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:208 +#: build/serializers.py:213 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:211 +#: build/serializers.py:216 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 +#: build/serializers.py:230 order/serializers.py:348 order/serializers.py:977 #: stock/forms.py:78 stock/serializers.py:314 -#: templates/js/translated/order.js:584 templates/js/translated/stock.js:236 -#: templates/js/translated/stock.js:400 +#: templates/js/translated/order.js:610 templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:403 msgid "Serial Numbers" msgstr "序列号" -#: build/serializers.py:226 +#: build/serializers.py:231 msgid "Enter serial numbers for build outputs" msgstr "输入生产产出的序列号" -#: build/serializers.py:240 +#: build/serializers.py:245 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:246 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:275 stock/api.py:551 +#: build/serializers.py:280 stock/api.py:593 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:328 build/serializers.py:393 +#: build/serializers.py:333 build/serializers.py:406 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:370 order/serializers.py:253 order/serializers.py:358 +#: build/serializers.py:376 order/serializers.py:321 order/serializers.py:426 #: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:297 -#: templates/js/translated/barcode.js:383 -#: templates/js/translated/barcode.js:565 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1323 templates/js/translated/order.js:611 -#: templates/js/translated/order.js:2049 templates/js/translated/order.js:2152 -#: templates/js/translated/order.js:2160 templates/js/translated/order.js:2241 -#: templates/js/translated/part.js:180 templates/js/translated/stock.js:529 -#: templates/js/translated/stock.js:694 templates/js/translated/stock.js:901 -#: templates/js/translated/stock.js:1772 templates/js/translated/stock.js:2344 +#: templates/js/translated/barcode.js:437 +#: templates/js/translated/barcode.js:619 templates/js/translated/build.js:706 +#: templates/js/translated/build.js:1652 templates/js/translated/order.js:637 +#: templates/js/translated/order.js:2295 templates/js/translated/order.js:2398 +#: templates/js/translated/order.js:2406 templates/js/translated/order.js:2487 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532 +#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904 +#: templates/js/translated/stock.js:1792 templates/js/translated/stock.js:2394 msgid "Location" msgstr "地点" -#: build/serializers.py:371 +#: build/serializers.py:377 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:377 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:579 -#: order/serializers.py:290 stock/templates/stock/item_base.html:187 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2041 -#: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1747 -#: templates/js/translated/stock.js:2421 templates/js/translated/stock.js:2570 +#: build/serializers.py:383 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:603 +#: order/serializers.py:358 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:183 templates/js/translated/build.js:2392 +#: templates/js/translated/order.js:742 templates/js/translated/order.js:1001 +#: templates/js/translated/order.js:1705 templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:2471 templates/js/translated/stock.js:2603 msgid "Status" msgstr "状态" -#: build/serializers.py:434 +#: build/serializers.py:389 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:390 +msgid "Complete ouputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:447 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:435 +#: build/serializers.py:448 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:445 templates/js/translated/build.js:151 +#: build/serializers.py:458 templates/js/translated/build.js:151 msgid "Required stock has not been fully allocated" msgstr "所需库存尚未完全分配" -#: build/serializers.py:450 +#: build/serializers.py:463 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:451 +#: build/serializers.py:464 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:461 templates/js/translated/build.js:155 +#: build/serializers.py:474 templates/js/translated/build.js:155 msgid "Required build quantity has not been completed" msgstr "所需生产数量尚未完成" -#: build/serializers.py:470 +#: build/serializers.py:483 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:473 build/templates/build/build_base.html:95 +#: build/serializers.py:486 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2874 -#: part/models.py:3016 +#: build/serializers.py:514 build/serializers.py:563 part/models.py:2917 +#: part/models.py:3059 msgid "BOM Item" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:524 msgid "Build output" msgstr "" -#: build/serializers.py:520 +#: build/serializers.py:533 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:567 +#: build/serializers.py:580 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:582 stock/serializers.py:642 +#: build/serializers.py:595 stock/serializers.py:642 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:638 order/serializers.py:834 +#: build/serializers.py:652 order/serializers.py:904 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:644 +#: build/serializers.py:658 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:665 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:679 order/serializers.py:1077 +#: build/serializers.py:670 +msgid "This stock item has already been allocated to this build output" +msgstr "" + +#: build/serializers.py:697 order/serializers.py:1147 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:731 +#: build/serializers.py:749 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:739 +#: build/serializers.py:757 msgid "Exclude Location" msgstr "" -#: build/serializers.py:740 +#: build/serializers.py:758 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:745 +#: build/serializers.py:763 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:746 +#: build/serializers.py:764 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:751 +#: build/serializers.py:769 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:770 msgid "Allow allocation of substitute parts" msgstr "" @@ -1232,13 +1272,13 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:849 +#: build/templates/build/detail.html:131 order/models.py:873 #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2081 templates/js/translated/order.js:992 -#: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2410 templates/js/translated/part.js:949 +#: templates/js/translated/build.js:2432 templates/js/translated/order.js:1018 +#: templates/js/translated/order.js:1317 templates/js/translated/order.js:1721 +#: templates/js/translated/order.js:2676 templates/js/translated/part.js:971 msgid "Target Date" msgstr "预计日期" @@ -1251,28 +1291,28 @@ msgstr "此次生产的截止日期为 %(target)s" #: build/templates/build/build_base.html:201 #: order/templates/order/order_base.html:98 #: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/table_filters.js:294 -#: templates/js/translated/table_filters.js:335 -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:353 +#: templates/js/translated/table_filters.js:383 msgid "Overdue" msgstr "逾期" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:67 build/templates/build/detail.html:142 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:2027 -#: templates/js/translated/table_filters.js:374 +#: templates/js/translated/table_filters.js:392 msgid "Completed" msgstr "已完成" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:983 -#: order/models.py:1079 order/templates/order/sales_order_base.html:9 +#: build/templates/build/detail.html:94 order/models.py:1052 +#: order/models.py:1148 order/models.py:1247 +#: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:291 -#: templates/js/translated/order.js:1414 +#: templates/js/translated/order.js:1660 msgid "Sales Order" msgstr "销售订单" @@ -1311,8 +1351,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:934 stock/forms.py:133 -#: templates/js/translated/order.js:717 templates/js/translated/order.js:1333 +#: build/templates/build/detail.html:49 order/models.py:988 stock/forms.py:133 +#: templates/js/translated/order.js:743 templates/js/translated/order.js:1359 msgid "Destination" msgstr "" @@ -1320,22 +1360,25 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:73 templates/js/translated/build.js:930 +#: build/templates/build/detail.html:73 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:80 #: stock/templates/stock/item_base.html:315 -#: templates/js/translated/stock.js:1761 templates/js/translated/stock.js:2577 +#: templates/js/translated/build.js:1139 +#: templates/js/translated/model_renderers.js:112 +#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1781 +#: templates/js/translated/stock.js:2610 #: templates/js/translated/table_filters.js:151 -#: templates/js/translated/table_filters.js:238 +#: templates/js/translated/table_filters.js:242 msgid "Batch" msgstr "" #: build/templates/build/detail.html:126 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2049 +#: templates/js/translated/build.js:2400 msgid "Created" msgstr "已创建" @@ -1355,7 +1398,7 @@ msgstr "子生产订单" msgid "Allocate Stock to Build" msgstr "为生产分配库存" -#: build/templates/build/detail.html:176 templates/js/translated/build.js:1515 +#: build/templates/build/detail.html:176 templates/js/translated/build.js:1866 msgid "Unallocate stock" msgstr "未分配库存" @@ -1448,33 +1491,41 @@ msgstr "打印操作" msgid "Print labels" msgstr "打印标签" -#: build/templates/build/detail.html:285 +#: build/templates/build/detail.html:274 +msgid "Expand all build output rows" +msgstr "" + +#: build/templates/build/detail.html:278 +msgid "Collapse all build output rows" +msgstr "" + +#: build/templates/build/detail.html:295 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:297 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:307 build/templates/build/sidebar.html:19 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:59 -#: order/templates/order/sales_order_detail.html:106 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:206 -#: part/templates/part/part_sidebar.html:58 stock/templates/stock/item.html:121 +#: order/templates/order/purchase_order_detail.html:82 +#: order/templates/order/sales_order_detail.html:129 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "附件" -#: build/templates/build/detail.html:312 +#: build/templates/build/detail.html:322 msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:548 +#: build/templates/build/detail.html:502 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:549 +#: build/templates/build/detail.html:503 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:312 +#: build/templates/build/index.html:18 part/templates/part/detail.html:311 msgid "New Build Order" msgstr "新建生产订单" @@ -1555,914 +1606,928 @@ msgstr "" msgid "Settings value" msgstr "" -#: common/models.py:417 +#: common/models.py:424 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:437 +#: common/models.py:444 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:448 +#: common/models.py:455 msgid "Value must be an integer value" msgstr "" -#: common/models.py:490 +#: common/models.py:504 msgid "Key string must be unique" msgstr "" -#: common/models.py:637 +#: common/models.py:655 msgid "No group" msgstr "" -#: common/models.py:679 +#: common/models.py:697 msgid "Restart required" msgstr "" -#: common/models.py:680 +#: common/models.py:698 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:687 -msgid "InvenTree Instance Name" -msgstr "" - -#: common/models.py:689 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:693 -msgid "Use instance name" -msgstr "" - -#: common/models.py:694 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:700 company/models.py:100 company/models.py:101 -msgid "Company name" -msgstr "公司名称" - -#: common/models.py:701 -msgid "Internal company name" -msgstr "内部公司名称" - -#: common/models.py:706 -msgid "Base URL" +#: common/models.py:705 +msgid "Server Instance Name" msgstr "" #: common/models.py:707 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:711 +msgid "Use instance name" +msgstr "" + +#: common/models.py:712 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:718 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:719 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:725 company/models.py:100 company/models.py:101 +msgid "Company name" +msgstr "公司名称" + +#: common/models.py:726 +msgid "Internal company name" +msgstr "内部公司名称" + +#: common/models.py:731 +msgid "Base URL" +msgstr "" + +#: common/models.py:732 msgid "Base URL for server instance" msgstr "" -#: common/models.py:713 +#: common/models.py:738 msgid "Default Currency" msgstr "" -#: common/models.py:714 +#: common/models.py:739 msgid "Default currency" msgstr "" -#: common/models.py:720 +#: common/models.py:745 msgid "Download from URL" msgstr "" -#: common/models.py:721 +#: common/models.py:746 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:727 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:752 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:728 +#: common/models.py:753 msgid "Enable barcode scanner support" msgstr "启用条形码扫描支持" -#: common/models.py:734 +#: common/models.py:759 msgid "IPN Regex" msgstr "" -#: common/models.py:735 +#: common/models.py:760 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:739 +#: common/models.py:764 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:740 +#: common/models.py:765 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:746 +#: common/models.py:771 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:747 +#: common/models.py:772 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:753 +#: common/models.py:778 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:754 +#: common/models.py:779 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:760 +#: common/models.py:785 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:761 +#: common/models.py:786 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:767 +#: common/models.py:792 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:768 +#: common/models.py:793 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:774 +#: common/models.py:799 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:775 +#: common/models.py:800 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:781 part/models.py:2569 report/models.py:187 +#: common/models.py:806 part/models.py:2598 report/models.py:183 #: templates/js/translated/table_filters.js:38 -#: templates/js/translated/table_filters.js:426 +#: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "模板" -#: common/models.py:782 +#: common/models.py:807 msgid "Parts are templates by default" msgstr "" -#: common/models.py:788 part/models.py:959 templates/js/translated/bom.js:1315 +#: common/models.py:813 part/models.py:964 templates/js/translated/bom.js:1335 #: templates/js/translated/table_filters.js:168 -#: templates/js/translated/table_filters.js:442 +#: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "组装" -#: common/models.py:789 +#: common/models.py:814 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:795 part/models.py:965 -#: templates/js/translated/table_filters.js:446 +#: common/models.py:820 part/models.py:970 +#: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "组件" -#: common/models.py:796 +#: common/models.py:821 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:802 part/models.py:976 +#: common/models.py:827 part/models.py:981 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:803 +#: common/models.py:828 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:809 part/models.py:981 -#: templates/js/translated/table_filters.js:454 +#: common/models.py:834 part/models.py:986 +#: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "可销售" -#: common/models.py:810 +#: common/models.py:835 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:816 part/models.py:971 +#: common/models.py:841 part/models.py:976 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 -#: templates/js/translated/table_filters.js:458 +#: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "可追踪" -#: common/models.py:817 +#: common/models.py:842 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:823 part/models.py:991 +#: common/models.py:848 part/models.py:996 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "虚拟" -#: common/models.py:824 +#: common/models.py:849 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:830 +#: common/models.py:855 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:831 +#: common/models.py:856 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:837 +#: common/models.py:862 msgid "Show Price in Forms" msgstr "在表格中显示价格" -#: common/models.py:838 +#: common/models.py:863 msgid "Display part price in some forms" msgstr "以某些表格显示商品价格" -#: common/models.py:849 +#: common/models.py:874 msgid "Show Price in BOM" msgstr "" -#: common/models.py:850 +#: common/models.py:875 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:861 +#: common/models.py:886 msgid "Show Price History" msgstr "" -#: common/models.py:862 +#: common/models.py:887 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:868 +#: common/models.py:893 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:869 +#: common/models.py:894 msgid "Display related parts for a part" msgstr "" -#: common/models.py:875 +#: common/models.py:900 msgid "Create initial stock" msgstr "创建初始库存" -#: common/models.py:876 +#: common/models.py:901 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:882 +#: common/models.py:907 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:883 +#: common/models.py:908 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:889 +#: common/models.py:914 msgid "Internal Price as BOM-Price" msgstr "内部价格为BOM价格" -#: common/models.py:890 +#: common/models.py:915 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "在 BOM价格计算中使用内部价格(如设置)" -#: common/models.py:896 +#: common/models.py:921 msgid "Part Name Display Format" msgstr "" -#: common/models.py:897 +#: common/models.py:922 msgid "Format to display the part name" msgstr "" -#: common/models.py:904 +#: common/models.py:929 msgid "Enable Reports" msgstr "" -#: common/models.py:905 +#: common/models.py:930 msgid "Enable generation of reports" msgstr "" -#: common/models.py:911 templates/stats.html:25 +#: common/models.py:936 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:912 +#: common/models.py:937 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:918 +#: common/models.py:943 msgid "Page Size" msgstr "页面大小" -#: common/models.py:919 +#: common/models.py:944 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:929 +#: common/models.py:954 msgid "Test Reports" msgstr "测试报表" -#: common/models.py:930 +#: common/models.py:955 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:936 +#: common/models.py:961 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:962 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:967 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:937 +#: common/models.py:968 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:943 +#: common/models.py:974 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:944 +#: common/models.py:975 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:950 +#: common/models.py:981 msgid "Stock Stale Time" msgstr "" -#: common/models.py:951 +#: common/models.py:982 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:953 +#: common/models.py:984 msgid "days" msgstr "天" -#: common/models.py:958 +#: common/models.py:989 msgid "Build Expired Stock" msgstr "" -#: common/models.py:959 +#: common/models.py:990 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:965 +#: common/models.py:996 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:966 +#: common/models.py:997 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:972 +#: common/models.py:1003 msgid "Build Order Reference Prefix" msgstr "生产订单参考前缀" -#: common/models.py:973 +#: common/models.py:1004 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:978 +#: common/models.py:1009 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:979 +#: common/models.py:1010 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:983 +#: common/models.py:1014 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:984 +#: common/models.py:1015 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:989 +#: common/models.py:1020 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:990 +#: common/models.py:1021 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:996 +#: common/models.py:1027 msgid "Enable password forgot" msgstr "" -#: common/models.py:997 +#: common/models.py:1028 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1002 +#: common/models.py:1034 msgid "Enable registration" msgstr "" -#: common/models.py:1003 +#: common/models.py:1035 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1008 +#: common/models.py:1041 msgid "Enable SSO" msgstr "" -#: common/models.py:1009 +#: common/models.py:1042 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1014 +#: common/models.py:1048 msgid "Email required" msgstr "" -#: common/models.py:1015 +#: common/models.py:1049 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1020 +#: common/models.py:1055 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1021 +#: common/models.py:1056 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1026 +#: common/models.py:1062 msgid "Mail twice" msgstr "" -#: common/models.py:1027 +#: common/models.py:1063 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1032 +#: common/models.py:1069 msgid "Password twice" msgstr "" -#: common/models.py:1033 +#: common/models.py:1070 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1038 +#: common/models.py:1076 msgid "Group on signup" msgstr "" -#: common/models.py:1039 +#: common/models.py:1077 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1044 +#: common/models.py:1083 msgid "Enforce MFA" msgstr "" -#: common/models.py:1045 +#: common/models.py:1084 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1051 +#: common/models.py:1090 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1052 +#: common/models.py:1091 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1059 +#: common/models.py:1099 msgid "Enable URL integration" msgstr "" -#: common/models.py:1060 +#: common/models.py:1100 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1066 +#: common/models.py:1107 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1067 +#: common/models.py:1108 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1073 +#: common/models.py:1115 msgid "Enable app integration" msgstr "" -#: common/models.py:1074 +#: common/models.py:1116 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1080 +#: common/models.py:1123 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1081 +#: common/models.py:1124 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1087 +#: common/models.py:1131 msgid "Enable event integration" msgstr "" -#: common/models.py:1088 +#: common/models.py:1132 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1103 common/models.py:1389 +#: common/models.py:1147 common/models.py:1449 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1134 +#: common/models.py:1178 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1135 +#: common/models.py:1179 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1140 +#: common/models.py:1185 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1141 +#: common/models.py:1186 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1146 +#: common/models.py:1192 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:1147 +#: common/models.py:1193 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:1152 +#: common/models.py:1199 msgid "Recent Part Count" msgstr "" -#: common/models.py:1153 +#: common/models.py:1200 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1159 +#: common/models.py:1206 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1160 +#: common/models.py:1207 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1165 +#: common/models.py:1213 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1166 +#: common/models.py:1214 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1171 +#: common/models.py:1220 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1172 +#: common/models.py:1221 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1177 +#: common/models.py:1227 msgid "Show low stock" msgstr "" -#: common/models.py:1178 +#: common/models.py:1228 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1183 +#: common/models.py:1234 msgid "Show depleted stock" msgstr "" -#: common/models.py:1184 +#: common/models.py:1235 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1189 +#: common/models.py:1241 msgid "Show needed stock" msgstr "" -#: common/models.py:1190 +#: common/models.py:1242 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1195 +#: common/models.py:1248 msgid "Show expired stock" msgstr "" -#: common/models.py:1196 +#: common/models.py:1249 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1201 +#: common/models.py:1255 msgid "Show stale stock" msgstr "" -#: common/models.py:1202 +#: common/models.py:1256 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1207 +#: common/models.py:1262 msgid "Show pending builds" msgstr "" -#: common/models.py:1208 +#: common/models.py:1263 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1213 +#: common/models.py:1269 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:1214 +#: common/models.py:1270 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:1219 +#: common/models.py:1276 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1220 +#: common/models.py:1277 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1225 +#: common/models.py:1283 msgid "Show overdue POs" msgstr "" -#: common/models.py:1226 +#: common/models.py:1284 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1231 +#: common/models.py:1290 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1232 +#: common/models.py:1291 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1237 +#: common/models.py:1297 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1238 +#: common/models.py:1298 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1244 +#: common/models.py:1304 msgid "Enable email notifications" msgstr "" -#: common/models.py:1245 +#: common/models.py:1305 msgid "Allow sending of emails for event notifications" msgstr "" -#: common/models.py:1251 +#: common/models.py:1311 msgid "Enable label printing" msgstr "" -#: common/models.py:1252 +#: common/models.py:1312 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1258 +#: common/models.py:1318 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:1259 +#: common/models.py:1319 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:1265 +#: common/models.py:1325 msgid "Inline report display" msgstr "" -#: common/models.py:1266 +#: common/models.py:1326 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:1272 +#: common/models.py:1332 msgid "Search Parts" msgstr "" -#: common/models.py:1273 +#: common/models.py:1333 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1279 +#: common/models.py:1339 msgid "Search Categories" msgstr "" -#: common/models.py:1280 +#: common/models.py:1340 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1286 +#: common/models.py:1346 msgid "Search Stock" msgstr "" -#: common/models.py:1287 +#: common/models.py:1347 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1293 +#: common/models.py:1353 msgid "Search Locations" msgstr "" -#: common/models.py:1294 +#: common/models.py:1354 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1300 +#: common/models.py:1360 msgid "Search Companies" msgstr "" -#: common/models.py:1301 +#: common/models.py:1361 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1307 +#: common/models.py:1367 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1308 +#: common/models.py:1368 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1314 +#: common/models.py:1374 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1315 +#: common/models.py:1375 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1321 +#: common/models.py:1381 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:1322 +#: common/models.py:1382 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1328 +#: common/models.py:1388 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1329 +#: common/models.py:1389 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1335 +#: common/models.py:1395 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:1336 +#: common/models.py:1396 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:1342 +#: common/models.py:1402 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1343 +#: common/models.py:1403 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1349 +#: common/models.py:1409 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1350 -msgid "InvenTree navbar position is fixed to the top of the screen" +#: common/models.py:1410 +msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1356 +#: common/models.py:1416 msgid "Date Format" msgstr "" -#: common/models.py:1357 +#: common/models.py:1417 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1371 part/templates/part/detail.html:39 +#: common/models.py:1431 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1372 +#: common/models.py:1432 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1430 company/forms.py:43 +#: common/models.py:1490 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1437 company/serializers.py:264 -#: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:976 templates/js/translated/part.js:1962 +#: common/models.py:1497 company/serializers.py:264 +#: company/templates/company/supplier_part.html:256 order/models.py:900 +#: templates/js/translated/part.js:998 templates/js/translated/part.js:1986 msgid "Price" msgstr "价格" -#: common/models.py:1438 +#: common/models.py:1498 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1595 common/models.py:1734 +#: common/models.py:1655 common/models.py:1794 msgid "Endpoint" msgstr "" -#: common/models.py:1596 +#: common/models.py:1656 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1605 +#: common/models.py:1665 msgid "Name for this webhook" msgstr "" -#: common/models.py:1610 part/models.py:986 plugin/models.py:46 +#: common/models.py:1670 part/models.py:991 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 -#: templates/js/translated/table_filters.js:290 -#: templates/js/translated/table_filters.js:421 +#: templates/js/translated/table_filters.js:308 +#: templates/js/translated/table_filters.js:439 msgid "Active" msgstr "" -#: common/models.py:1611 +#: common/models.py:1671 msgid "Is this webhook active" msgstr "" -#: common/models.py:1625 +#: common/models.py:1685 msgid "Token" msgstr "" -#: common/models.py:1626 +#: common/models.py:1686 msgid "Token for access" msgstr "" -#: common/models.py:1633 +#: common/models.py:1693 msgid "Secret" msgstr "" -#: common/models.py:1634 +#: common/models.py:1694 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1701 +#: common/models.py:1761 msgid "Message ID" msgstr "" -#: common/models.py:1702 +#: common/models.py:1762 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1710 +#: common/models.py:1770 msgid "Host" msgstr "" -#: common/models.py:1711 +#: common/models.py:1771 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1718 +#: common/models.py:1778 msgid "Header" msgstr "" -#: common/models.py:1719 +#: common/models.py:1779 msgid "Header of this message" msgstr "" -#: common/models.py:1725 +#: common/models.py:1785 msgid "Body" msgstr "" -#: common/models.py:1726 +#: common/models.py:1786 msgid "Body of this message" msgstr "" -#: common/models.py:1735 +#: common/models.py:1795 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1740 +#: common/models.py:1800 msgid "Worked on" msgstr "" -#: common/models.py:1741 +#: common/models.py:1801 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49 -#: order/templates/order/purchase_order_detail.html:23 order/views.py:243 -#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:208 +#: common/views.py:93 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:243 part/views.py:206 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "上传文件" #: common/views.py:94 order/views.py:244 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:209 -#: templates/patterns/wizard/match_fields.html:51 +#: part/views.py:207 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "匹配字段" @@ -2479,10 +2544,7 @@ msgid "Parts imported" msgstr "已导入商品" #: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19 -#: order/templates/order/order_wizard/po_upload.html:47 -#: 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:45 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" @@ -2491,7 +2553,7 @@ msgstr "" #: company/forms.py:24 part/forms.py:46 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "" #: company/forms.py:25 part/forms.py:47 msgid "Image URL" @@ -2552,7 +2614,7 @@ msgstr "" msgid "Link to external company information" msgstr "链接到外部公司信息" -#: company/models.py:139 part/models.py:878 +#: company/models.py:139 part/models.py:883 msgid "Image" msgstr "图片" @@ -2581,7 +2643,8 @@ msgid "Does this company manufacture parts?" msgstr "该公司制造商品吗?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:103 stock/serializers.py:179 +#: company/templates/company/company_base.html:103 part/serializers.py:156 +#: part/serializers.py:188 stock/serializers.py:179 msgid "Currency" msgstr "货币" @@ -2589,7 +2652,7 @@ msgstr "货币" msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:320 company/models.py:535 stock/models.py:575 +#: company/models.py:320 company/models.py:535 stock/models.py:611 #: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2599,13 +2662,13 @@ msgid "Select part" msgstr "选择商品" #: company/models.py:335 company/templates/company/company_base.html:73 -#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/manufacturer_part.html:92 #: company/templates/company/supplier_part.html:97 #: stock/templates/stock/item_base.html:364 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:235 -#: templates/js/translated/table_filters.js:393 +#: templates/js/translated/table_filters.js:411 msgid "Manufacturer" msgstr "制造商" @@ -2613,13 +2676,13 @@ msgstr "制造商" msgid "Select manufacturer" msgstr "选择制造商" -#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/models.py:342 company/templates/company/manufacturer_part.html:97 #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 -#: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:246 templates/js/translated/part.js:934 +#: templates/js/translated/company.js:818 templates/js/translated/order.js:1237 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:956 msgid "MPN" -msgstr "MPN" +msgstr "" #: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" @@ -2634,8 +2697,8 @@ msgid "Manufacturer part description" msgstr "制造商商品描述" #: company/models.py:409 company/models.py:558 -#: company/templates/company/manufacturer_part.html:6 -#: company/templates/company/manufacturer_part.html:23 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:374 msgid "Manufacturer Part" msgstr "制造商商品" @@ -2646,8 +2709,8 @@ msgstr "参数名称" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2131 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:754 templates/js/translated/stock.js:1296 +#: stock/models.py:2195 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:776 templates/js/translated/stock.js:1303 msgid "Value" msgstr "数值" @@ -2655,10 +2718,10 @@ msgstr "数值" msgid "Parameter value" msgstr "参数值" -#: company/models.py:429 part/models.py:953 part/models.py:2537 -#: part/templates/part/part_base.html:308 +#: company/models.py:429 part/models.py:958 part/models.py:2566 +#: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:325 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:760 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:782 msgid "Units" msgstr "单位" @@ -2671,14 +2734,14 @@ msgid "Linked manufacturer part must reference the same base part" msgstr "" #: company/models.py:545 company/templates/company/company_base.html:78 -#: company/templates/company/supplier_part.html:87 order/models.py:227 +#: company/templates/company/supplier_part.html:87 order/models.py:251 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237 #: part/bom.py:265 stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:216 templates/js/translated/part.js:902 -#: templates/js/translated/table_filters.js:397 +#: templates/js/translated/company.js:774 templates/js/translated/order.js:984 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:924 +#: templates/js/translated/table_filters.js:415 msgid "Supplier" msgstr "供应商" @@ -2687,10 +2750,10 @@ msgid "Select supplier" msgstr "选择供应商" #: company/models.py:551 company/templates/company/supplier_part.html:91 -#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:227 templates/js/translated/part.js:920 +#: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1224 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:942 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" @@ -2709,23 +2772,23 @@ msgid "Supplier part description" msgstr "供应商商品描述" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2762 part/templates/part/upload_bom.html:59 -#: report/templates/report/inventree_po_report.html:93 +#: part/models.py:2805 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "备注" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1847 +#: company/models.py:580 part/models.py:1876 msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:599 stock/templates/stock/item_base.html:322 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 +#: stock/models.py:635 stock/templates/stock/item_base.html:322 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1917 msgid "Packaging" msgstr "打包" @@ -2733,7 +2796,7 @@ msgstr "打包" msgid "Part packaging" msgstr "商品打包" -#: company/models.py:584 part/models.py:1849 +#: company/models.py:584 part/models.py:1878 msgid "multiple" msgstr "" @@ -2760,7 +2823,7 @@ msgid "Company" msgstr "公司" #: company/templates/company/company_base.html:22 -#: templates/js/translated/order.js:279 +#: templates/js/translated/order.js:283 msgid "Create Purchase Order" msgstr "创建采购订单" @@ -2796,13 +2859,13 @@ msgstr "上传新图片" msgid "Download image from URL" msgstr "从 URL 下载图片" -#: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:618 -#: stock/models.py:619 stock/serializers.py:683 +#: company/templates/company/company_base.html:83 order/models.py:598 +#: order/templates/order/sales_order_base.html:115 stock/models.py:654 +#: stock/models.py:655 stock/serializers.py:683 #: stock/templates/stock/item_base.html:274 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2385 -#: templates/js/translated/table_filters.js:401 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1682 +#: templates/js/translated/stock.js:2435 +#: templates/js/translated/table_filters.js:419 msgid "Customer" msgstr "客户" @@ -2815,7 +2878,7 @@ msgid "Phone" msgstr "电话" #: company/templates/company/company_base.html:205 -#: part/templates/part/part_base.html:493 +#: part/templates/part/part_base.html:465 msgid "Upload Image" msgstr "上传图片" @@ -2831,17 +2894,17 @@ msgid "Create new supplier part" msgstr "创建新的供应商商品" #: company/templates/company/detail.html:19 -#: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:353 +#: company/templates/company/manufacturer_part.html:119 +#: part/templates/part/detail.html:352 msgid "New Supplier Part" msgstr "新建供应商商品" #: company/templates/company/detail.html:31 #: company/templates/company/detail.html:78 -#: company/templates/company/manufacturer_part.html:127 -#: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:362 -#: part/templates/part/detail.html:391 +#: company/templates/company/manufacturer_part.html:128 +#: company/templates/company/manufacturer_part.html:157 +#: part/templates/part/category.html:168 part/templates/part/detail.html:361 +#: part/templates/part/detail.html:390 msgid "Options" msgstr "选项" @@ -2869,7 +2932,7 @@ msgstr "制造商商品" msgid "Create new manufacturer part" msgstr "新建制造商商品" -#: company/templates/company/detail.html:66 part/templates/part/detail.html:381 +#: company/templates/company/detail.html:66 part/templates/part/detail.html:380 msgid "New Manufacturer Part" msgstr "新建制造商商品" @@ -2883,10 +2946,10 @@ msgstr "供货商库存" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:38 +#: part/templates/part/detail.html:77 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:47 -#: templates/js/translated/search.js:173 templates/navbar.html:47 +#: templates/js/translated/search.js:173 templates/navbar.html:50 #: users/models.py:45 msgid "Purchase Orders" msgstr "采购订单" @@ -2906,10 +2969,10 @@ msgstr "新建采购订单" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:42 +#: part/templates/part/detail.html:100 part/templates/part/part_sidebar.html:41 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/search.js:190 templates/navbar.html:58 +#: templates/js/translated/search.js:190 templates/navbar.html:61 #: users/models.py:46 msgid "Sales Orders" msgstr "销售订单" @@ -2925,7 +2988,7 @@ msgid "New Sales Order" msgstr "新建销售订单" #: company/templates/company/detail.html:167 -#: templates/js/translated/build.js:1295 +#: templates/js/translated/build.js:1625 msgid "Assigned Stock" msgstr "" @@ -2934,14 +2997,14 @@ msgid "Company Notes" msgstr "公司备注" #: company/templates/company/detail.html:375 -#: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:452 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:451 msgid "Delete Supplier Parts?" msgstr "删除供应商商品?" #: company/templates/company/detail.html:376 -#: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:453 +#: company/templates/company/manufacturer_part.html:217 +#: part/templates/part/detail.html:452 msgid "All selected supplier parts will be deleted" msgstr "删除所有选定的供应商商品" @@ -2949,83 +3012,83 @@ msgstr "删除所有选定的供应商商品" msgid "Supplier List" msgstr "供应商列表" -#: company/templates/company/manufacturer_part.html:14 company/views.py:55 -#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178 -#: templates/navbar.html:46 +#: company/templates/company/manufacturer_part.html:15 company/views.py:55 +#: part/templates/part/prices.html:170 templates/InvenTree/search.html:178 +#: templates/navbar.html:49 msgid "Manufacturers" msgstr "制造商" -#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/manufacturer_part.html:36 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:80 msgid "Order part" msgstr "订购商品" -#: company/templates/company/manufacturer_part.html:40 +#: company/templates/company/manufacturer_part.html:41 #: templates/js/translated/company.js:565 msgid "Edit manufacturer part" msgstr "编辑制造商商品" -#: company/templates/company/manufacturer_part.html:44 +#: company/templates/company/manufacturer_part.html:45 #: templates/js/translated/company.js:566 msgid "Delete manufacturer part" msgstr "删除生产商商品" -#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/manufacturer_part.html:67 #: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "内部商品" -#: company/templates/company/manufacturer_part.html:114 +#: company/templates/company/manufacturer_part.html:115 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:36 part/templates/part/prices.html:163 -#: templates/InvenTree/search.html:188 templates/navbar.html:45 +#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 +#: templates/InvenTree/search.html:188 templates/navbar.html:48 msgid "Suppliers" msgstr "供应商" -#: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:364 +#: company/templates/company/manufacturer_part.html:130 +#: part/templates/part/detail.html:363 msgid "Delete supplier parts" msgstr "删除供应商商品" -#: company/templates/company/manufacturer_part.html:129 -#: company/templates/company/manufacturer_part.html:158 -#: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:364 part/templates/part/detail.html:393 +#: company/templates/company/manufacturer_part.html:130 +#: company/templates/company/manufacturer_part.html:159 +#: company/templates/company/manufacturer_part.html:255 +#: part/templates/part/detail.html:363 part/templates/part/detail.html:392 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:32 -#: users/models.py:218 +#: users/models.py:220 msgid "Delete" msgstr "删除" -#: company/templates/company/manufacturer_part.html:143 +#: company/templates/company/manufacturer_part.html:144 #: company/templates/company/manufacturer_part_sidebar.html:5 -#: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:180 part/templates/part/part_sidebar.html:9 +#: part/templates/part/category_sidebar.html:19 +#: part/templates/part/detail.html:179 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "参数" -#: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:185 +#: company/templates/company/manufacturer_part.html:148 +#: part/templates/part/detail.html:184 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" msgstr "新建参数" -#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:159 msgid "Delete parameters" msgstr "删除参数" -#: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:865 +#: company/templates/company/manufacturer_part.html:192 +#: part/templates/part/detail.html:864 msgid "Add Parameter" msgstr "添加参数" -#: company/templates/company/manufacturer_part.html:239 +#: company/templates/company/manufacturer_part.html:240 msgid "Selected parameters will be deleted" msgstr "所选参数将被删除" -#: company/templates/company/manufacturer_part.html:251 +#: company/templates/company/manufacturer_part.html:252 msgid "Delete Parameters" msgstr "删除参数" @@ -3046,9 +3109,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:583 +#: company/templates/company/supplier_part.html:24 stock/models.py:619 #: stock/templates/stock/item_base.html:386 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1874 msgid "Supplier Part" msgstr "供应商商品" @@ -3074,7 +3137,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:168 -#: templates/js/translated/stock.js:376 +#: templates/js/translated/stock.js:379 msgid "New Stock Item" msgstr "" @@ -3089,13 +3152,13 @@ msgid "Order Part" msgstr "订购商品" #: company/templates/company/supplier_part.html:179 -#: part/templates/part/prices.html:7 +#: part/templates/part/prices.html:10 msgid "Pricing Information" msgstr "价格信息" #: company/templates/company/supplier_part.html:184 #: company/templates/company/supplier_part.html:298 -#: part/templates/part/prices.html:271 part/views.py:1238 +#: part/templates/part/prices.html:274 templates/js/translated/part.js:2058 msgid "Add Price Break" msgstr "" @@ -3103,11 +3166,13 @@ msgstr "" msgid "No price break information found" msgstr "" -#: company/templates/company/supplier_part.html:224 part/views.py:1300 +#: company/templates/company/supplier_part.html:224 +#: templates/js/translated/part.js:2068 msgid "Delete Price Break" msgstr "" -#: company/templates/company/supplier_part.html:238 part/views.py:1286 +#: company/templates/company/supplier_part.html:238 +#: templates/js/translated/part.js:2082 msgid "Edit Price Break" msgstr "" @@ -3124,15 +3189,15 @@ msgid "Last updated" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:15 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:43 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:669 -#: templates/js/translated/part.js:1204 templates/js/translated/part.js:1365 -#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1676 -#: templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:678 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387 +#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1696 +#: templates/navbar.html:31 msgid "Stock" msgstr "库存" @@ -3146,18 +3211,19 @@ msgid "Supplier Part Pricing" msgstr "供应商商品价格" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:32 +#: part/templates/part/part_sidebar.html:31 msgid "Pricing" msgstr "定价" #: company/templates/company/supplier_part_sidebar.html:5 +#: part/templates/part/category.html:192 +#: part/templates/part/category_sidebar.html:17 #: stock/templates/stock/location.html:138 #: stock/templates/stock/location.html:152 #: stock/templates/stock/location.html:164 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:152 templates/js/translated/search.js:127 -#: templates/js/translated/stock.js:2291 templates/stats.html:105 -#: templates/stats.html:114 users/models.py:43 +#: templates/js/translated/stock.js:2311 users/models.py:43 msgid "Stock Items" msgstr "库存项" @@ -3170,7 +3236,7 @@ msgid "New Manufacturer" msgstr "新建制造商" #: company/views.py:61 templates/InvenTree/search.html:208 -#: templates/navbar.html:57 +#: templates/navbar.html:60 msgid "Customers" msgstr "客户信息" @@ -3186,20 +3252,20 @@ msgstr "公司" msgid "New Company" msgstr "新建公司信息" -#: company/views.py:129 part/views.py:589 +#: company/views.py:129 part/views.py:591 msgid "Download Image" msgstr "下载图片" -#: company/views.py:158 part/views.py:621 +#: company/views.py:158 part/views.py:623 msgid "Image size exceeds maximum allowable size for download" msgstr "图像大小超过下载允许的最大尺寸" -#: company/views.py:165 part/views.py:628 +#: company/views.py:165 part/views.py:630 #, python-brace-format msgid "Invalid response: {code}" msgstr "无效响应: {code}" -#: company/views.py:174 part/views.py:637 +#: company/views.py:174 part/views.py:639 msgid "Supplied URL is not a valid image file" msgstr "提供的 URL 不是一个有效的图片文件" @@ -3223,7 +3289,7 @@ msgstr "标签" msgid "Label template file" msgstr "标签模板文件" -#: label/models.py:134 report/models.py:298 +#: label/models.py:134 report/models.py:294 msgid "Enabled" msgstr "已启用" @@ -3247,7 +3313,7 @@ msgstr "高度 [mm]" msgid "Label height, specified in mm" msgstr "标注高度,以毫米为单位。" -#: label/models.py:154 report/models.py:291 +#: label/models.py:154 report/models.py:287 msgid "Filename Pattern" msgstr "文件名样式" @@ -3260,7 +3326,7 @@ msgid "Query filters (comma-separated list of key=value pairs)," msgstr "查询筛选器 (逗号分隔的键值对列表)" #: label/models.py:259 label/models.py:319 label/models.py:366 -#: report/models.py:322 report/models.py:459 report/models.py:497 +#: report/models.py:318 report/models.py:455 report/models.py:494 msgid "Filters" msgstr "筛选器" @@ -3285,374 +3351,392 @@ msgstr "" msgid "Cancel order" msgstr "取消订单" -#: order/models.py:125 +#: order/models.py:130 msgid "Order description" msgstr "" -#: order/models.py:127 +#: order/models.py:132 msgid "Link to external page" msgstr "" -#: order/models.py:135 +#: order/models.py:140 msgid "Created By" msgstr "" -#: order/models.py:142 +#: order/models.py:147 msgid "User or group responsible for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:147 +#: order/models.py:152 msgid "Order notes" msgstr "" -#: order/models.py:214 order/models.py:564 +#: order/models.py:238 order/models.py:588 msgid "Order reference" msgstr "" -#: order/models.py:219 order/models.py:579 +#: order/models.py:243 order/models.py:603 msgid "Purchase order status" msgstr "" -#: order/models.py:228 +#: order/models.py:252 msgid "Company from which the items are being ordered" msgstr "订购该商品的公司" -#: order/models.py:231 order/templates/order/order_base.html:118 -#: templates/js/translated/order.js:967 +#: order/models.py:255 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:993 msgid "Supplier Reference" msgstr "" -#: order/models.py:231 +#: order/models.py:255 msgid "Supplier order reference code" msgstr "" -#: order/models.py:238 +#: order/models.py:262 msgid "received by" msgstr "" -#: order/models.py:243 +#: order/models.py:267 msgid "Issue Date" msgstr "" -#: order/models.py:244 +#: order/models.py:268 msgid "Date order was issued" msgstr "" -#: order/models.py:249 +#: order/models.py:273 msgid "Target Delivery Date" msgstr "" -#: order/models.py:250 +#: order/models.py:274 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:256 +#: order/models.py:280 msgid "Date order was completed" msgstr "" -#: order/models.py:285 +#: order/models.py:309 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:430 +#: order/models.py:454 msgid "Quantity must be a positive number" msgstr "数量必须大于0" -#: order/models.py:575 +#: order/models.py:599 msgid "Company to which the items are being sold" msgstr "向其出售该商品的公司" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer Reference " msgstr "" -#: order/models.py:581 +#: order/models.py:605 msgid "Customer order reference code" msgstr "" -#: order/models.py:586 +#: order/models.py:610 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:589 order/models.py:1084 -#: templates/js/translated/order.js:1483 templates/js/translated/order.js:1634 +#: order/models.py:613 order/models.py:1153 +#: templates/js/translated/order.js:1729 templates/js/translated/order.js:1880 msgid "Shipment Date" msgstr "" -#: order/models.py:596 +#: order/models.py:620 msgid "shipped by" msgstr "" -#: order/models.py:662 +#: order/models.py:686 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:666 +#: order/models.py:690 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:669 +#: order/models.py:693 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:672 +#: order/models.py:696 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:837 +#: order/models.py:861 msgid "Item quantity" msgstr "" -#: order/models.py:843 +#: order/models.py:867 msgid "Line item reference" msgstr "" -#: order/models.py:845 +#: order/models.py:869 msgid "Line item notes" msgstr "" -#: order/models.py:850 +#: order/models.py:874 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:878 +#: order/models.py:892 +msgid "Context" +msgstr "" + +#: order/models.py:893 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:901 +msgid "Unit price" +msgstr "" + +#: order/models.py:934 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 +#: order/models.py:947 order/models.py:1029 order/models.py:1051 +#: order/models.py:1147 order/models.py:1247 +#: templates/js/translated/order.js:2271 msgid "Order" msgstr "" -#: order/models.py:892 order/templates/order/order_base.html:9 +#: order/models.py:948 order/models.py:1029 +#: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 -#: report/templates/report/inventree_po_report.html:77 +#: report/templates/report/inventree_po_report.html:76 #: stock/templates/stock/item_base.html:336 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:877 -#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2366 +#: templates/js/translated/order.js:962 templates/js/translated/part.js:899 +#: templates/js/translated/stock.js:1851 templates/js/translated/stock.js:2416 msgid "Purchase Order" msgstr "" -#: order/models.py:913 +#: order/models.py:967 msgid "Supplier part" msgstr "供应商商品" -#: order/models.py:920 order/templates/order/order_base.html:163 -#: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:971 templates/js/translated/part.js:998 -#: templates/js/translated/table_filters.js:312 +#: order/models.py:974 order/templates/order/order_base.html:163 +#: templates/js/translated/order.js:740 templates/js/translated/order.js:1339 +#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 +#: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:921 +#: order/models.py:975 msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 +#: order/models.py:982 part/templates/part/prices.html:179 stock/models.py:749 #: stock/serializers.py:170 stock/templates/stock/item_base.html:343 -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:1905 msgid "Purchase Price" msgstr "采购价格" -#: order/models.py:929 +#: order/models.py:983 msgid "Unit purchase price" msgstr "" -#: order/models.py:937 +#: order/models.py:991 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:992 part/templates/part/part_pricing.html:112 -#: part/templates/part/prices.html:116 part/templates/part/prices.html:284 +#: order/models.py:1061 part/templates/part/part_pricing.html:112 +#: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "销售价格" -#: order/models.py:993 +#: order/models.py:1062 msgid "Unit sale price" msgstr "" -#: order/models.py:998 +#: order/models.py:1067 msgid "Shipped quantity" msgstr "" -#: order/models.py:1085 +#: order/models.py:1154 msgid "Date of shipment" msgstr "" -#: order/models.py:1092 +#: order/models.py:1161 msgid "Checked By" msgstr "" -#: order/models.py:1093 +#: order/models.py:1162 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1101 +#: order/models.py:1170 msgid "Shipment number" msgstr "" -#: order/models.py:1108 +#: order/models.py:1177 msgid "Shipment notes" msgstr "" -#: order/models.py:1115 +#: order/models.py:1184 msgid "Tracking Number" msgstr "" -#: order/models.py:1116 +#: order/models.py:1185 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1126 +#: order/models.py:1195 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1129 +#: order/models.py:1198 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1207 order/models.py:1209 +#: order/models.py:1291 order/models.py:1293 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1213 +#: order/models.py:1297 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1215 +#: order/models.py:1299 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1218 +#: order/models.py:1302 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1222 +#: order/models.py:1306 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1228 order/serializers.py:827 +#: order/models.py:1312 order/serializers.py:897 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1231 +#: order/models.py:1315 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1232 +#: order/models.py:1316 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1240 +#: order/models.py:1324 msgid "Line" msgstr "" -#: order/models.py:1248 order/serializers.py:918 order/serializers.py:1046 -#: templates/js/translated/model_renderers.js:296 +#: order/models.py:1332 order/serializers.py:988 order/serializers.py:1116 +#: templates/js/translated/model_renderers.js:300 msgid "Shipment" msgstr "" -#: order/models.py:1249 +#: order/models.py:1333 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1261 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1345 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1262 +#: order/models.py:1346 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1265 +#: order/models.py:1349 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:187 +#: order/serializers.py:77 +msgid "Price currency" +msgstr "" + +#: order/serializers.py:246 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:238 order/serializers.py:883 +#: order/serializers.py:306 order/serializers.py:953 msgid "Line Item" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:312 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:254 order/serializers.py:359 +#: order/serializers.py:322 order/serializers.py:427 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:273 templates/js/translated/order.js:574 +#: order/serializers.py:341 templates/js/translated/order.js:600 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:281 templates/js/translated/order.js:585 +#: order/serializers.py:349 templates/js/translated/order.js:611 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:294 +#: order/serializers.py:362 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:295 +#: order/serializers.py:363 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:312 +#: order/serializers.py:380 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:331 +#: order/serializers.py:399 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:371 +#: order/serializers.py:439 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:388 +#: order/serializers.py:456 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:399 +#: order/serializers.py:467 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:672 +#: order/serializers.py:742 msgid "Sale price currency" msgstr "" -#: order/serializers.py:742 +#: order/serializers.py:812 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:792 order/serializers.py:895 +#: order/serializers.py:862 order/serializers.py:965 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:814 +#: order/serializers.py:884 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:908 +#: order/serializers.py:978 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:932 order/serializers.py:1057 +#: order/serializers.py:1002 order/serializers.py:1127 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:935 order/serializers.py:1060 +#: order/serializers.py:1005 order/serializers.py:1130 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:987 +#: order/serializers.py:1057 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:997 +#: order/serializers.py:1067 msgid "The following serial numbers are already allocated" msgstr "" @@ -3725,7 +3809,12 @@ msgstr "" msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:219 +#: order/templates/order/order_base.html:177 +#: order/templates/order/sales_order_base.html:189 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:225 msgid "Edit Purchase Order" msgstr "" @@ -3756,7 +3845,6 @@ msgid "Errors exist in the submitted data" msgstr "提交数据中存在错误" #: 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" @@ -3775,12 +3863,11 @@ msgstr "选择供应商商品" #: 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:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1588 -#: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:566 templates/js/translated/stock.js:734 +#: templates/js/translated/bom.js:76 templates/js/translated/build.js:383 +#: templates/js/translated/build.js:535 templates/js/translated/build.js:1939 +#: templates/js/translated/order.js:688 templates/js/translated/order.js:1939 +#: templates/js/translated/stock.js:569 templates/js/translated/stock.js:737 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "移除行" @@ -3789,19 +3876,11 @@ msgstr "移除行" msgid "Return to Orders" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:17 +#: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" msgstr "" -#: order/templates/order/order_wizard/po_upload.html:25 -#: part/templates/part/import_wizard/ajax_part_upload.html:10 -#: part/templates/part/import_wizard/part_upload.html:23 -#: templates/patterns/wizard/upload.html:13 -#, python-format -msgid "Step %(step)s of %(count)s" -msgstr "步骤 %(step)s / %(count)s" - -#: order/templates/order/order_wizard/po_upload.html:55 +#: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." msgstr "" @@ -3844,8 +3923,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:1000 templates/js/translated/order.js:1491 -#: templates/js/translated/order.js:1621 +#: templates/js/translated/order.js:1026 templates/js/translated/order.js:1737 +#: templates/js/translated/order.js:1867 msgid "Items" msgstr "" @@ -3865,7 +3944,7 @@ msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/so_sidebar.html:5 -#: report/templates/report/inventree_po_report.html:85 +#: report/templates/report/inventree_po_report.html:84 #: report/templates/report/inventree_so_report.html:85 msgid "Line Items" msgstr "" @@ -3879,9 +3958,9 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:26 -#: order/templates/order/purchase_order_detail.html:159 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/sales_order_detail.html:22 -#: order/templates/order/sales_order_detail.html:226 +#: order/templates/order/sales_order_detail.html:249 msgid "Add Line Item" msgstr "" @@ -3889,15 +3968,30 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:48 +#: order/templates/order/sales_order_detail.html:40 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:53 +#: order/templates/order/sales_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:273 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:72 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:74 -#: order/templates/order/sales_order_detail.html:121 +#: order/templates/order/purchase_order_detail.html:97 +#: order/templates/order/sales_order_detail.html:144 msgid "Order Notes" msgstr "" +#: order/templates/order/purchase_order_detail.html:235 +msgid "Add Order Line" +msgstr "" + #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:33 msgid "Print Order Reports" @@ -3912,7 +4006,7 @@ msgid "Print packing list" msgstr "" #: order/templates/order/sales_order_base.html:66 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/sales_order_base.html:235 msgid "Complete Sales Order" msgstr "" @@ -3921,17 +4015,17 @@ msgid "This Sales Order has not been fully allocated" msgstr "" #: order/templates/order/sales_order_base.html:122 -#: templates/js/translated/order.js:1449 +#: templates/js/translated/order.js:1695 msgid "Customer Reference" msgstr "" #: order/templates/order/sales_order_base.html:140 -#: order/templates/order/sales_order_detail.html:77 +#: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:215 +#: order/templates/order/sales_order_base.html:221 msgid "Edit Sales Order" msgstr "" @@ -3948,17 +4042,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/sales_order_detail.html:66 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:47 -#: templates/js/translated/bom.js:953 templates/js/translated/build.js:1496 +#: order/templates/order/sales_order_detail.html:70 +#: templates/js/translated/bom.js:992 templates/js/translated/build.js:1847 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:56 +#: order/templates/order/sales_order_detail.html:79 msgid "New Shipment" msgstr "" @@ -4029,52 +4123,52 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:491 +#: part/api.py:509 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:511 +#: part/api.py:529 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:529 +#: part/api.py:547 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:561 +#: part/api.py:579 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:659 msgid "Valid" msgstr "" -#: part/api.py:642 +#: part/api.py:660 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:647 +#: part/api.py:665 msgid "This option must be selected" msgstr "" -#: part/api.py:1027 +#: part/api.py:1045 msgid "Must be greater than zero" msgstr "必须大于0" -#: part/api.py:1031 +#: part/api.py:1049 msgid "Must be a valid quantity" msgstr "必须是有效的数量" -#: part/api.py:1046 +#: part/api.py:1064 msgid "Specify location for initial part stock" msgstr "指定初始初始商品仓储地点" -#: part/api.py:1077 part/api.py:1081 part/api.py:1096 part/api.py:1100 +#: part/api.py:1095 part/api.py:1099 part/api.py:1114 part/api.py:1118 msgid "This field is required" msgstr "此字段为必填" -#: part/bom.py:125 part/models.py:112 part/models.py:887 -#: part/templates/part/category.html:108 part/templates/part/part_base.html:358 +#: part/bom.py:125 part/models.py:112 part/models.py:892 +#: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "默认仓储地点" @@ -4087,9 +4181,9 @@ msgid "Available Stock" msgstr "可用库存" #: part/bom.py:128 part/templates/part/part_base.html:207 -#: templates/js/translated/part.js:508 templates/js/translated/part.js:528 -#: templates/js/translated/part.js:1207 templates/js/translated/part.js:1379 -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:517 templates/js/translated/part.js:537 +#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 +#: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" @@ -4121,14 +4215,14 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:126 part/models.py:2613 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2642 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" #: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:113 -#: templates/stats.html:96 users/models.py:40 +#: users/models.py:40 msgid "Part Categories" msgstr "商品类别" @@ -4138,9 +4232,8 @@ msgstr "商品类别" #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 -#: templates/js/translated/part.js:1758 templates/js/translated/search.js:99 -#: templates/navbar.html:21 templates/stats.html:92 templates/stats.html:101 -#: users/models.py:41 +#: templates/js/translated/part.js:1780 templates/js/translated/search.js:99 +#: templates/navbar.html:24 users/models.py:41 msgid "Parts" msgstr "商品" @@ -4165,466 +4258,470 @@ msgstr "" msgid "Most recent serial number is" msgstr "" -#: part/models.py:786 +#: part/models.py:787 msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:811 part/models.py:2666 +#: part/models.py:816 part/models.py:2695 msgid "Part name" msgstr "商品名称" -#: part/models.py:818 +#: part/models.py:823 msgid "Is Template" msgstr "" -#: part/models.py:819 +#: part/models.py:824 msgid "Is this part a template part?" msgstr "" -#: part/models.py:829 +#: part/models.py:834 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:830 +#: part/models.py:835 msgid "Variant Of" msgstr "" -#: part/models.py:836 +#: part/models.py:841 msgid "Part description" msgstr "商品描述" -#: part/models.py:841 part/templates/part/category.html:86 -#: part/templates/part/part_base.html:322 +#: part/models.py:846 part/templates/part/category.html:86 +#: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "关键词" -#: part/models.py:842 +#: part/models.py:847 msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:849 part/models.py:2363 part/models.py:2612 -#: part/templates/part/part_base.html:285 +#: part/models.py:854 part/models.py:2392 part/models.py:2641 +#: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:224 -#: templates/js/translated/part.js:1347 +#: templates/js/translated/part.js:1369 msgid "Category" msgstr "类别" -#: part/models.py:850 +#: part/models.py:855 msgid "Part category" msgstr "商品类别" -#: part/models.py:855 part/templates/part/part_base.html:294 -#: templates/js/translated/part.js:657 templates/js/translated/part.js:1300 -#: templates/js/translated/stock.js:1648 +#: part/models.py:860 part/templates/part/part_base.html:266 +#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 +#: templates/js/translated/stock.js:1668 msgid "IPN" msgstr "" -#: part/models.py:856 +#: part/models.py:861 msgid "Internal Part Number" msgstr "内部商品编号" -#: part/models.py:862 +#: part/models.py:867 msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:863 part/templates/part/part_base.html:301 -#: report/models.py:200 templates/js/translated/part.js:661 +#: part/models.py:868 part/templates/part/part_base.html:273 +#: report/models.py:196 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:885 +#: part/models.py:890 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:932 part/templates/part/part_base.html:367 +#: part/models.py:937 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:933 +#: part/models.py:938 msgid "Default supplier part" msgstr "默认供应商商品" -#: part/models.py:940 +#: part/models.py:945 msgid "Default Expiry" msgstr "" -#: part/models.py:941 +#: part/models.py:946 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:946 part/templates/part/part_base.html:200 +#: part/models.py:951 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "最低库存" -#: part/models.py:947 +#: part/models.py:952 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:954 +#: part/models.py:959 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:960 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:966 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:972 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:977 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:982 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:987 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:992 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "这是一个虚拟商品,如软件产品或许可证吗?" -#: part/models.py:997 +#: part/models.py:1002 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "BOM checksum" msgstr "" -#: part/models.py:1000 +#: part/models.py:1005 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1003 +#: part/models.py:1008 msgid "BOM checked by" msgstr "" -#: part/models.py:1005 +#: part/models.py:1010 msgid "BOM checked date" msgstr "" -#: part/models.py:1009 +#: part/models.py:1014 msgid "Creation User" msgstr "新建用户" -#: part/models.py:1849 +#: part/models.py:1878 msgid "Sell multiple" msgstr "" -#: part/models.py:2413 +#: part/models.py:2442 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2430 +#: part/models.py:2459 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2450 templates/js/translated/part.js:1809 -#: templates/js/translated/stock.js:1276 +#: part/models.py:2479 templates/js/translated/part.js:1831 +#: templates/js/translated/stock.js:1283 msgid "Test Name" msgstr "" -#: part/models.py:2451 +#: part/models.py:2480 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2456 +#: part/models.py:2485 msgid "Test Description" msgstr "" -#: part/models.py:2457 +#: part/models.py:2486 msgid "Enter description for this test" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1818 -#: templates/js/translated/table_filters.js:276 +#: part/models.py:2491 templates/js/translated/part.js:1840 +#: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2463 +#: part/models.py:2492 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2468 templates/js/translated/part.js:1826 +#: part/models.py:2497 templates/js/translated/part.js:1848 msgid "Requires Value" msgstr "" -#: part/models.py:2469 +#: part/models.py:2498 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1833 +#: part/models.py:2503 templates/js/translated/part.js:1855 msgid "Requires Attachment" msgstr "" -#: part/models.py:2475 +#: part/models.py:2504 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2486 +#: part/models.py:2515 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2522 +#: part/models.py:2551 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2530 +#: part/models.py:2559 msgid "Parameter Name" msgstr "" -#: part/models.py:2537 +#: part/models.py:2566 msgid "Parameter Units" msgstr "" -#: part/models.py:2567 +#: part/models.py:2596 msgid "Parent Part" msgstr "" -#: part/models.py:2569 part/models.py:2618 part/models.py:2619 +#: part/models.py:2598 part/models.py:2647 part/models.py:2648 #: templates/InvenTree/settings/settings.html:219 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Data" msgstr "" -#: part/models.py:2571 +#: part/models.py:2600 msgid "Parameter Value" msgstr "" -#: part/models.py:2623 templates/InvenTree/settings/settings.html:228 +#: part/models.py:2652 templates/InvenTree/settings/settings.html:228 msgid "Default Value" msgstr "默认值" -#: part/models.py:2624 +#: part/models.py:2653 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2658 +#: part/models.py:2687 msgid "Part ID or part name" msgstr "" -#: part/models.py:2661 +#: part/models.py:2690 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "商品ID" -#: part/models.py:2662 +#: part/models.py:2691 msgid "Unique part ID value" msgstr "" -#: part/models.py:2665 +#: part/models.py:2694 msgid "Part Name" msgstr "" -#: part/models.py:2669 +#: part/models.py:2698 msgid "Part IPN" msgstr "" -#: part/models.py:2670 +#: part/models.py:2699 msgid "Part IPN value" msgstr "" -#: part/models.py:2673 +#: part/models.py:2702 msgid "Level" msgstr "" -#: part/models.py:2674 +#: part/models.py:2703 msgid "BOM level" msgstr "" -#: part/models.py:2735 +#: part/models.py:2778 msgid "Select parent part" msgstr "" -#: part/models.py:2743 +#: part/models.py:2786 msgid "Sub part" msgstr "" -#: part/models.py:2744 +#: part/models.py:2787 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2750 +#: part/models.py:2793 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2752 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:789 templates/js/translated/bom.js:871 +#: part/models.py:2795 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:816 templates/js/translated/bom.js:910 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "可选项" -#: part/models.py:2752 +#: part/models.py:2795 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2755 part/templates/part/upload_bom.html:55 +#: part/models.py:2798 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2756 +#: part/models.py:2799 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2759 +#: part/models.py:2802 msgid "BOM item reference" msgstr "" -#: part/models.py:2762 +#: part/models.py:2805 msgid "BOM item notes" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "Checksum" msgstr "" -#: part/models.py:2764 +#: part/models.py:2807 msgid "BOM line checksum" msgstr "" -#: part/models.py:2768 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:888 +#: part/models.py:2811 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:927 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "继承项" -#: part/models.py:2769 +#: part/models.py:2812 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2774 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:880 +#: part/models.py:2817 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:919 msgid "Allow Variants" msgstr "" -#: part/models.py:2775 +#: part/models.py:2818 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2860 stock/models.py:461 +#: part/models.py:2903 stock/models.py:497 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2869 part/models.py:2871 +#: part/models.py:2912 part/models.py:2914 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2983 +#: part/models.py:3026 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3005 +#: part/models.py:3048 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Parent BOM item" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Substitute part" msgstr "" -#: part/models.py:3036 +#: part/models.py:3079 msgid "Part 1" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Part 2" msgstr "" -#: part/models.py:3040 +#: part/models.py:3083 msgid "Select Related Part" msgstr "" -#: part/models.py:3072 +#: part/models.py:3115 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:835 +#: part/serializers.py:157 part/serializers.py:189 stock/serializers.py:180 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:923 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:846 +#: part/serializers.py:934 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:847 +#: part/serializers.py:935 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:852 +#: part/serializers.py:940 msgid "Include Inherited" msgstr "" -#: part/serializers.py:853 +#: part/serializers.py:941 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:858 +#: part/serializers.py:946 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:947 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:952 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:953 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:909 +#: part/serializers.py:997 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:910 +#: part/serializers.py:998 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:937 +#: part/serializers.py:1025 msgid "No part column specified" msgstr "" -#: part/serializers.py:980 +#: part/serializers.py:1068 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:983 +#: part/serializers.py:1071 msgid "No matching part found" msgstr "" -#: part/serializers.py:986 +#: part/serializers.py:1074 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:995 +#: part/serializers.py:1083 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1003 +#: part/serializers.py:1091 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1022 +#: part/serializers.py:1110 msgid "At least one BOM item is required" msgstr "" @@ -4656,7 +4753,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:263 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:262 msgid "BOM actions" msgstr "" @@ -4708,7 +4805,7 @@ msgstr "类别路径" msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:114 part/templates/part/category.html:202 +#: part/templates/part/category.html:114 part/templates/part/category.html:211 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "子类别" @@ -4745,23 +4842,23 @@ msgstr "导出" msgid "Export Data" msgstr "导出数据" -#: part/templates/part/category.html:192 +#: part/templates/part/category.html:201 msgid "Part Parameters" msgstr "商品参数" -#: part/templates/part/category.html:285 +#: part/templates/part/category.html:309 msgid "Create Part Category" msgstr "创建商品类别" -#: part/templates/part/category.html:305 +#: part/templates/part/category.html:329 msgid "Create Part" msgstr "创建商品" -#: part/templates/part/category.html:308 +#: part/templates/part/category.html:332 msgid "Create another part after this one" msgstr "" -#: part/templates/part/category.html:309 +#: part/templates/part/category.html:333 msgid "Part created successfully" msgstr "" @@ -4801,7 +4898,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:350 msgid "Duplicate Part" msgstr "复制部件" @@ -4837,174 +4934,175 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:57 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:136 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:152 +#: part/templates/part/detail.html:151 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:156 +#: part/templates/part/detail.html:155 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:157 +#: part/templates/part/detail.html:156 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:183 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:221 part/templates/part/part_sidebar.html:55 +#: part/templates/part/detail.html:220 part/templates/part/part_sidebar.html:54 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:225 part/templates/part/detail.html:226 +#: part/templates/part/detail.html:224 part/templates/part/detail.html:225 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:246 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:245 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:251 +#: part/templates/part/detail.html:250 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:255 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:254 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:257 +#: part/templates/part/detail.html:256 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:267 +#: part/templates/part/detail.html:266 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:268 templates/js/translated/part.js:273 +#: part/templates/part/detail.html:267 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:269 +#: part/templates/part/detail.html:268 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:274 +#: part/templates/part/detail.html:273 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:275 +#: part/templates/part/detail.html:274 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:288 +#: part/templates/part/detail.html:287 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:306 +#: part/templates/part/detail.html:305 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:333 stock/templates/stock/item.html:42 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:348 msgid "Part Suppliers" msgstr "商品供应商" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:376 msgid "Part Manufacturers" msgstr "商品制造商" -#: part/templates/part/detail.html:393 +#: part/templates/part/detail.html:392 msgid "Delete manufacturer parts" msgstr "删除制造商商品" -#: part/templates/part/detail.html:596 +#: part/templates/part/detail.html:595 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:597 +#: part/templates/part/detail.html:596 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:646 +#: part/templates/part/detail.html:645 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:690 +#: part/templates/part/detail.html:689 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:698 +#: part/templates/part/detail.html:697 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:795 +#: part/templates/part/detail.html:794 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:928 +#: part/templates/part/detail.html:927 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:940 +#: part/templates/part/detail.html:939 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:952 +#: part/templates/part/detail.html:951 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1041 +#: part/templates/part/detail.html:1040 #, python-format msgid "Unit Price - %(currency)s" msgstr "" #: 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 "" #: 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 "" #: 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 "文件字段" #: 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 "移除列" #: 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 "" +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "步骤 %(step)s / %(count)s" + #: part/templates/part/import_wizard/ajax_part_upload.html:29 -#: part/templates/part/import_wizard/part_upload.html:53 +#: part/templates/part/import_wizard/part_upload.html:14 msgid "Unsuffitient privileges." msgstr "" @@ -5012,7 +5110,7 @@ msgstr "" msgid "Return to Parts" msgstr "" -#: part/templates/part/import_wizard/part_upload.html:16 +#: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" msgstr "从文件导入商品" @@ -5112,13 +5210,13 @@ msgstr "商品是虚拟的(不是实体零件)" #: part/templates/part/part_base.html:143 #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 -#: templates/js/translated/model_renderers.js:187 -#: templates/js/translated/part.js:572 templates/js/translated/part.js:649 +#: templates/js/translated/model_renderers.js:192 +#: templates/js/translated/part.js:581 templates/js/translated/part.js:658 msgid "Inactive" msgstr "" #: part/templates/part/part_base.html:160 -#: part/templates/part/part_base.html:601 +#: part/templates/part/part_base.html:573 msgid "Show Part Details" msgstr "" @@ -5127,142 +5225,124 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2436 +#: part/templates/part/part_base.html:194 templates/js/translated/order.js:2702 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:215 templates/InvenTree/index.html:178 -msgid "Required for Build Orders" -msgstr "" - -#: part/templates/part/part_base.html:220 +#: part/templates/part/part_base.html:215 msgid "Allocated to Build Orders" msgstr "" #: part/templates/part/part_base.html:224 -#: part/templates/part/part_base.html:247 -msgid "Required quantity has not been allocated" -msgstr "" - -#: part/templates/part/part_base.html:226 -#: part/templates/part/part_base.html:249 -msgid "Required quantity has been allocated" -msgstr "" - -#: part/templates/part/part_base.html:236 -msgid "Required for Sales Orders" -msgstr "" - -#: part/templates/part/part_base.html:243 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:259 templates/js/translated/bom.js:909 +#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:948 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:265 templates/js/translated/part.js:511 -#: templates/js/translated/part.js:531 templates/js/translated/part.js:1211 -#: templates/js/translated/part.js:1383 templates/js/translated/part.js:1399 +#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520 +#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233 +#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:315 +#: part/templates/part/part_base.html:287 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:344 +#: part/templates/part/part_base.html:316 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:348 +#: part/templates/part/part_base.html:320 #: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:471 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:486 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:595 +#: part/templates/part/part_base.html:567 msgid "Hide Part Details" msgstr "" -#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:24 msgid "Supplier Pricing" msgstr "" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:100 -#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25 -#: part/templates/part/prices.html:52 part/templates/part/prices.html:103 -#: part/templates/part/prices.html:120 +#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28 +#: part/templates/part/prices.html:55 part/templates/part/prices.html:106 +#: part/templates/part/prices.html:123 msgid "Unit Cost" msgstr "" #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:104 -#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32 -#: part/templates/part/prices.html:59 part/templates/part/prices.html:108 -#: part/templates/part/prices.html:125 +#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35 +#: part/templates/part/prices.html:62 part/templates/part/prices.html:111 +#: part/templates/part/prices.html:128 msgid "Total Cost" msgstr "" -#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40 -#: templates/js/translated/bom.js:863 +#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43 +#: templates/js/translated/bom.js:902 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49 -#: part/templates/part/prices.html:243 +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52 +#: part/templates/part/prices.html:246 msgid "BOM Pricing" msgstr "" -#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69 +#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72 msgid "Unit Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76 +#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79 msgid "Total Purchase Price" msgstr "" -#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86 +#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89 msgid "Note: BOM pricing is incomplete for this part" msgstr "注:此商品BOM价格不完整。" -#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93 +#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102 +#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105 msgid "Internal Price" msgstr "" #: part/templates/part/part_pricing.html:128 -#: part/templates/part/prices.html:134 +#: part/templates/part/prices.html:137 msgid "No pricing information is available for this part." msgstr "此商品无价格信息可用。" -#: part/templates/part/part_sidebar.html:12 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:28 +#: part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:47 +#: part/templates/part/part_sidebar.html:46 msgid "Scheduling" msgstr "" -#: part/templates/part/part_sidebar.html:51 +#: part/templates/part/part_sidebar.html:50 msgid "Test Templates" msgstr "" @@ -5307,69 +5387,69 @@ msgstr "" msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information." msgstr "" -#: part/templates/part/prices.html:16 +#: part/templates/part/prices.html:19 msgid "Pricing ranges" msgstr "" -#: part/templates/part/prices.html:22 +#: part/templates/part/prices.html:25 msgid "Show supplier cost" msgstr "" -#: part/templates/part/prices.html:23 +#: part/templates/part/prices.html:26 msgid "Show purchase price" msgstr "" -#: part/templates/part/prices.html:50 +#: part/templates/part/prices.html:53 msgid "Show BOM cost" msgstr "" -#: part/templates/part/prices.html:117 +#: part/templates/part/prices.html:120 msgid "Show sale cost" msgstr "" -#: part/templates/part/prices.html:118 +#: part/templates/part/prices.html:121 msgid "Show sale price" msgstr "" -#: part/templates/part/prices.html:140 +#: part/templates/part/prices.html:143 msgid "Calculation parameters" msgstr "" -#: part/templates/part/prices.html:155 templates/js/translated/bom.js:857 +#: part/templates/part/prices.html:158 templates/js/translated/bom.js:896 msgid "Supplier Cost" msgstr "" -#: part/templates/part/prices.html:156 part/templates/part/prices.html:177 -#: part/templates/part/prices.html:201 part/templates/part/prices.html:231 -#: part/templates/part/prices.html:257 part/templates/part/prices.html:285 +#: part/templates/part/prices.html:159 part/templates/part/prices.html:180 +#: part/templates/part/prices.html:204 part/templates/part/prices.html:234 +#: part/templates/part/prices.html:260 part/templates/part/prices.html:289 msgid "Jump to overview" msgstr "" -#: part/templates/part/prices.html:181 +#: part/templates/part/prices.html:184 msgid "Stock Pricing" msgstr "" -#: part/templates/part/prices.html:190 +#: part/templates/part/prices.html:193 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/prices.html:200 +#: part/templates/part/prices.html:203 msgid "Internal Cost" msgstr "" -#: part/templates/part/prices.html:215 part/views.py:1309 +#: part/templates/part/prices.html:218 msgid "Add Internal Price Break" msgstr "" -#: part/templates/part/prices.html:230 +#: part/templates/part/prices.html:233 msgid "BOM Cost" msgstr "" -#: part/templates/part/prices.html:256 +#: part/templates/part/prices.html:259 msgid "Sale Cost" msgstr "" -#: part/templates/part/prices.html:296 +#: part/templates/part/prices.html:300 msgid "No sale pice history available for this part." msgstr "" @@ -5377,8 +5457,8 @@ msgstr "" msgid "Set category for the following parts" msgstr "为以下商品设置类别" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:534 -#: templates/js/translated/part.js:1199 templates/js/translated/part.js:1403 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 +#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" msgstr "" @@ -5432,103 +5512,96 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:191 msgid "Unknown database" msgstr "" -#: part/views.py:88 +#: part/templatetags/inventree_extras.py:228 +#, python-brace-format +msgid "{title} v{version}" +msgstr "" + +#: part/views.py:86 msgid "Set Part Category" msgstr "设置商品类别" -#: part/views.py:138 +#: part/views.py:136 #, python-brace-format msgid "Set category for {n} parts" msgstr "为 {n} 个商品设置类别" -#: part/views.py:210 +#: part/views.py:208 msgid "Match References" msgstr "" -#: part/views.py:507 +#: part/views.py:509 msgid "None" msgstr "" -#: part/views.py:566 +#: part/views.py:568 msgid "Part QR Code" msgstr "商品二维码" -#: part/views.py:668 +#: part/views.py:670 msgid "Select Part Image" msgstr "选择商品图像" -#: part/views.py:694 +#: part/views.py:696 msgid "Updated part image" msgstr "更新商品图像" -#: part/views.py:697 +#: part/views.py:699 msgid "Part image not found" msgstr "未找到商品图像" -#: part/views.py:785 +#: part/views.py:787 msgid "Confirm Part Deletion" msgstr "确认删除商品" -#: part/views.py:792 +#: part/views.py:794 msgid "Part was deleted" msgstr "商品已删除" -#: part/views.py:801 +#: part/views.py:803 msgid "Part Pricing" msgstr "商品价格" -#: part/views.py:950 +#: part/views.py:952 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:960 +#: part/views.py:962 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:967 +#: part/views.py:969 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1010 templates/js/translated/part.js:316 +#: part/views.py:1012 templates/js/translated/part.js:317 msgid "Edit Part Category" msgstr "编辑商品类别" -#: part/views.py:1048 +#: part/views.py:1050 msgid "Delete Part Category" msgstr "删除商品类别" -#: part/views.py:1054 +#: part/views.py:1056 msgid "Part category was deleted" msgstr "商品类别已删除" -#: part/views.py:1063 +#: part/views.py:1065 msgid "Create Category Parameter Template" msgstr "创建类别参数模板" -#: part/views.py:1164 +#: part/views.py:1166 msgid "Edit Category Parameter Template" msgstr "编辑类别参数模板" -#: part/views.py:1220 +#: part/views.py:1222 msgid "Delete Category Parameter Template" msgstr "删除类别参数模板" -#: part/views.py:1242 -msgid "Added new price break" -msgstr "" - -#: part/views.py:1318 -msgid "Edit Internal Price Break" -msgstr "" - -#: part/views.py:1326 -msgid "Delete Internal Price Break" -msgstr "" - #: plugin/apps.py:52 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5537,11 +5610,11 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/integration.py:138 +#: plugin/integration.py:146 msgid "No author found" msgstr "" -#: plugin/integration.py:152 +#: plugin/integration.py:160 msgid "No date found" msgstr "" @@ -5637,92 +5710,92 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:234 report/api.py:278 +#: report/api.py:235 report/api.py:282 #, python-brace-format -msgid "Template file '{filename}' is missing or does not exist" +msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:182 +#: report/models.py:178 msgid "Template name" msgstr "" -#: report/models.py:188 +#: report/models.py:184 msgid "Report template file" msgstr "" -#: report/models.py:195 +#: report/models.py:191 msgid "Report template description" msgstr "" -#: report/models.py:201 +#: report/models.py:197 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:292 +#: report/models.py:288 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:299 +#: report/models.py:295 msgid "Report template is enabled" msgstr "" -#: report/models.py:323 +#: report/models.py:319 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:331 +#: report/models.py:327 msgid "Include Installed Tests" msgstr "" -#: report/models.py:332 +#: report/models.py:328 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:382 +#: report/models.py:378 msgid "Build Filters" msgstr "" -#: report/models.py:383 +#: report/models.py:379 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:425 +#: report/models.py:421 msgid "Part Filters" msgstr "商品过滤器" -#: report/models.py:426 +#: report/models.py:422 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:460 +#: report/models.py:456 msgid "Purchase order query filters" msgstr "" -#: report/models.py:498 +#: report/models.py:495 msgid "Sales order query filters" msgstr "" -#: report/models.py:548 +#: report/models.py:550 msgid "Snippet" msgstr "" -#: report/models.py:549 +#: report/models.py:551 msgid "Report snippet file" msgstr "" -#: report/models.py:553 +#: report/models.py:555 msgid "Snippet file description" msgstr "" -#: report/models.py:588 +#: report/models.py:590 msgid "Asset" msgstr "" -#: report/models.py:589 +#: report/models.py:591 msgid "Report asset file" msgstr "" -#: report/models.py:592 +#: report/models.py:594 msgid "Asset file description" msgstr "" @@ -5735,12 +5808,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:623 stock/templates/stock/item_base.html:156 -#: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1309 -#: templates/js/translated/model_renderers.js:103 -#: templates/js/translated/order.js:99 templates/js/translated/order.js:2142 -#: templates/js/translated/order.js:2231 templates/js/translated/stock.js:431 +#: stock/models.py:659 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:376 templates/js/translated/build.js:528 +#: templates/js/translated/build.js:1133 templates/js/translated/build.js:1638 +#: templates/js/translated/model_renderers.js:106 +#: templates/js/translated/order.js:103 templates/js/translated/order.js:2388 +#: templates/js/translated/order.js:2477 templates/js/translated/stock.js:434 msgid "Serial Number" msgstr "序列号" @@ -5749,19 +5822,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2119 +#: stock/models.py:2183 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2125 +#: stock/models.py:2189 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/InvenTree/settings/plugin.html:50 +#: templates/InvenTree/settings/plugin.html:51 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2307 +#: templates/js/translated/order.js:1010 templates/js/translated/stock.js:2344 msgid "Date" msgstr "" @@ -5779,26 +5852,26 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:551 templates/js/translated/stock.js:721 -#: templates/js/translated/stock.js:2560 +#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724 +#: templates/js/translated/stock.js:2593 msgid "Serial" msgstr "" -#: stock/api.py:503 +#: stock/api.py:545 msgid "Quantity is required" msgstr "" -#: stock/api.py:510 +#: stock/api.py:552 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:535 +#: stock/api.py:577 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:717 #: stock/templates/stock/item_base.html:193 -#: templates/js/translated/stock.js:1801 +#: templates/js/translated/stock.js:1821 msgid "Expiry Date" msgstr "" @@ -5838,228 +5911,232 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:91 stock/models.py:717 +#: stock/models.py:93 stock/models.py:754 #: stock/templates/stock/item_base.html:407 msgid "Owner" msgstr "" -#: stock/models.py:92 stock/models.py:718 +#: stock/models.py:94 stock/models.py:755 msgid "Select Owner" msgstr "" -#: stock/models.py:442 +#: stock/models.py:470 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:478 +#: stock/models.py:514 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "商品类型 ('{pf}') 必须是 {pe}" -#: stock/models.py:488 stock/models.py:497 +#: stock/models.py:524 stock/models.py:533 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:489 +#: stock/models.py:525 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:511 +#: stock/models.py:547 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:517 +#: stock/models.py:553 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:524 +#: stock/models.py:560 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:567 +#: stock/models.py:603 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:576 +#: stock/models.py:612 msgid "Base part" msgstr "" -#: stock/models.py:584 +#: stock/models.py:620 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:590 stock/templates/stock/location.html:16 +#: stock/models.py:626 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "仓储地点" -#: stock/models.py:593 +#: stock/models.py:629 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:606 stock/templates/stock/item_base.html:282 +#: stock/models.py:642 stock/templates/stock/item_base.html:282 msgid "Installed In" msgstr "" -#: stock/models.py:609 +#: stock/models.py:645 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:625 +#: stock/models.py:661 msgid "Serial number for this item" msgstr "" -#: stock/models.py:639 +#: stock/models.py:675 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:643 +#: stock/models.py:680 msgid "Stock Quantity" msgstr "" -#: stock/models.py:652 +#: stock/models.py:689 msgid "Source Build" msgstr "" -#: stock/models.py:654 +#: stock/models.py:691 msgid "Build for this stock item" msgstr "" -#: stock/models.py:665 +#: stock/models.py:702 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:668 +#: stock/models.py:705 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:674 +#: stock/models.py:711 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:681 +#: stock/models.py:718 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete on deplete" msgstr "" -#: stock/models.py:694 +#: stock/models.py:731 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:704 stock/templates/stock/item.html:136 +#: stock/models.py:741 stock/templates/stock/item.html:137 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:713 +#: stock/models.py:750 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:782 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1302 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1308 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1250 +#: stock/models.py:1314 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1253 +#: stock/models.py:1317 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1256 +#: stock/models.py:1320 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1327 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1398 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1337 +#: stock/models.py:1401 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1340 +#: stock/models.py:1404 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1343 +#: stock/models.py:1407 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1410 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1413 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1356 stock/serializers.py:832 +#: stock/models.py:1420 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1360 +#: stock/models.py:1424 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1364 +#: stock/models.py:1428 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1368 +#: stock/models.py:1432 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1540 +#: stock/models.py:1604 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2039 +#: stock/models.py:2103 msgid "Entry notes" msgstr "" -#: stock/models.py:2096 +#: stock/models.py:2160 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2102 +#: stock/models.py:2166 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2120 +#: stock/models.py:2184 msgid "Test name" msgstr "" -#: stock/models.py:2126 +#: stock/models.py:2190 msgid "Test result" msgstr "" -#: stock/models.py:2132 +#: stock/models.py:2196 msgid "Test output value" msgstr "" -#: stock/models.py:2139 +#: stock/models.py:2203 msgid "Test result attachment" msgstr "" -#: stock/models.py:2145 +#: stock/models.py:2209 msgid "Test notes" msgstr "" @@ -6067,10 +6144,6 @@ msgstr "" msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:180 -msgid "Purchase currency of this stock item" -msgstr "" - #: stock/serializers.py:294 msgid "Enter number of stock items to serialize" msgstr "" @@ -6096,7 +6169,7 @@ msgstr "" msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:363 stock/views.py:1009 +#: stock/serializers.py:363 stock/views.py:1019 msgid "Serial numbers already exist" msgstr "序列号已存在" @@ -6180,46 +6253,46 @@ msgstr "" msgid "New Entry" msgstr "" -#: stock/templates/stock/item.html:73 +#: stock/templates/stock/item.html:74 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:81 +#: stock/templates/stock/item.html:82 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:90 +#: stock/templates/stock/item.html:91 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item_base.html:60 +#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:60 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:99 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:102 +#: stock/templates/stock/item.html:103 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:151 +#: stock/templates/stock/item.html:152 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:155 templates/js/translated/stock.js:2669 +#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2703 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:315 templates/js/translated/stock.js:1444 +#: stock/templates/stock/item.html:316 templates/js/translated/stock.js:1464 msgid "Add Test Result" msgstr "" #: stock/templates/stock/item_base.html:42 -#: templates/js/translated/barcode.js:330 -#: templates/js/translated/barcode.js:335 +#: templates/js/translated/barcode.js:384 +#: templates/js/translated/barcode.js:389 msgid "Unlink Barcode" msgstr "" @@ -6323,7 +6396,7 @@ msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:197 -#: templates/js/translated/table_filters.js:252 +#: templates/js/translated/table_filters.js:261 msgid "Expired" msgstr "" @@ -6333,12 +6406,12 @@ msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" #: stock/templates/stock/item_base.html:199 -#: templates/js/translated/table_filters.js:258 +#: templates/js/translated/table_filters.js:267 msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:206 -#: templates/js/translated/stock.js:1817 +#: templates/js/translated/stock.js:1837 msgid "Last Updated" msgstr "" @@ -6375,7 +6448,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:301 -#: templates/js/translated/build.js:1331 +#: templates/js/translated/build.js:1660 msgid "No location set" msgstr "未设置仓储地点" @@ -6473,8 +6546,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:147 templates/InvenTree/search.html:164 -#: templates/js/translated/search.js:145 templates/stats.html:109 -#: users/models.py:42 +#: templates/js/translated/search.js:145 users/models.py:42 msgid "Stock Locations" msgstr "仓储地点" @@ -6551,11 +6623,11 @@ msgstr "" msgid "Are you sure you want to delete this stock tracking entry?" msgstr "" -#: stock/views.py:152 templates/js/translated/stock.js:137 +#: stock/views.py:152 templates/js/translated/stock.js:138 msgid "Edit Stock Location" msgstr "编辑仓储地点" -#: stock/views.py:259 stock/views.py:610 stock/views.py:736 stock/views.py:1018 +#: stock/views.py:259 stock/views.py:610 stock/views.py:746 stock/views.py:1028 msgid "Owner is required (ownership control is enabled)" msgstr "" @@ -6595,7 +6667,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1039 +#: stock/views.py:479 templates/js/translated/stock.js:1046 msgid "Confirm stock adjustment" msgstr "" @@ -6603,79 +6675,80 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:340 +#: stock/views.py:512 templates/js/translated/stock.js:343 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:662 +#: stock/views.py:672 msgid "Create new Stock Location" msgstr "新建仓储地点" -#: stock/views.py:763 +#: stock/views.py:773 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:320 +#: stock/views.py:915 templates/js/translated/stock.js:323 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:987 +#: stock/views.py:997 msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1087 +#: stock/views.py:1097 msgid "Delete Stock Location" msgstr "删除仓储地点" -#: stock/views.py:1100 +#: stock/views.py:1110 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1111 +#: stock/views.py:1121 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1118 +#: stock/views.py:1128 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1127 +#: stock/views.py:1137 msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 +#: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" -#: templates/403.html:14 +#: templates/403.html:15 msgid "You do not have permission to view this page." msgstr "" -#: templates/404.html:5 templates/404.html:11 +#: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" msgstr "" -#: templates/404.html:14 +#: templates/404.html:15 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:5 templates/500.html:11 +#: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" msgstr "" -#: templates/500.html:14 -msgid "The InvenTree server raised an internal error" +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" msgstr "" -#: templates/500.html:15 +#: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" msgstr "" -#: templates/503.html:10 templates/503.html:35 +#: templates/503.html:11 templates/503.html:36 msgid "Site is in Maintenance" msgstr "" -#: templates/503.html:41 +#: templates/503.html:42 msgid "The site is currently in maintenance and should be up again soon!" msgstr "" @@ -6707,6 +6780,10 @@ msgstr "" msgid "Depleted Stock" msgstr "" +#: templates/InvenTree/index.html:178 +msgid "Required for Build Orders" +msgstr "" + #: templates/InvenTree/index.html:191 msgid "Expired Stock" msgstr "" @@ -6778,7 +6855,7 @@ msgid "Age" msgstr "" #: templates/InvenTree/notifications/notifications.html:88 -#: templates/InvenTree/settings/plugin.html:126 +#: templates/InvenTree/settings/plugin.html:133 msgid "Message" msgstr "" @@ -6857,7 +6934,7 @@ msgid "Signup" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:131 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:139 msgid "Settings" msgstr "设置" @@ -6895,42 +6972,46 @@ msgid "Plugin Settings" msgstr "" #: templates/InvenTree/settings/plugin.html:16 -msgid "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." +msgid "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." msgstr "" -#: templates/InvenTree/settings/plugin.html:33 +#: templates/InvenTree/settings/plugin.html:34 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/plugin.html:39 #: templates/js/translated/plugin.js:15 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:129 +#: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 #: users/models.py:39 msgid "Admin" msgstr "管理员" -#: templates/InvenTree/settings/plugin.html:49 +#: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:28 msgid "Author" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:52 #: templates/InvenTree/settings/plugin_settings.html:43 msgid "Version" msgstr "" -#: templates/InvenTree/settings/plugin.html:92 +#: templates/InvenTree/settings/plugin.html:82 +msgid "code sample" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:99 msgid "Inactive plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:115 +#: templates/InvenTree/settings/plugin.html:122 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:124 +#: templates/InvenTree/settings/plugin.html:131 msgid "Stage" msgstr "" @@ -6968,7 +7049,7 @@ msgid "This plugin was installed as a package" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:88 -msgid "This plugin was found in a local InvenTree path" +msgid "This plugin was found in a local server path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:94 @@ -7111,7 +7192,7 @@ msgstr "库存设置" msgid "Change Password" msgstr "更改密码" -#: templates/InvenTree/settings/user.html:22 +#: templates/InvenTree/settings/user.html:23 #: templates/js/translated/helpers.js:27 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" @@ -7324,7 +7405,7 @@ msgstr "帮助翻译工作!" #: templates/InvenTree/settings/user_display.html:104 #, python-format -msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 @@ -7424,7 +7505,7 @@ msgid "This email confirmation link expired or is invalid. Please sign up first." msgstr "" -#: templates/account/login.html:42 +#: templates/account/login.html:45 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:47 -msgid "InvenTree demo instance" -msgstr "" - -#: templates/account/login.html:47 -msgid "Click here for login details" -msgstr "" - -#: templates/account/login.html:55 +#: templates/account/login.html:51 msgid "or use SSO" msgstr "" @@ -7624,15 +7697,15 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1350 +#: templates/js/translated/bom.js:1370 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1425 -#: templates/js/translated/build.js:2144 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:521 +#: templates/js/translated/bom.js:829 templates/js/translated/build.js:1754 +#: templates/js/translated/build.js:2495 templates/js/translated/part.js:527 +#: templates/js/translated/part.js:530 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "空闲" @@ -7642,10 +7715,6 @@ msgstr "空闲" msgid "You are receiving this email because you are subscribed to notifications for this part " msgstr "" -#: templates/email/email.html:35 -msgid "InvenTree version" -msgstr "" - #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" @@ -7762,101 +7831,101 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: templates/js/translated/barcode.js:29 +#: templates/js/translated/barcode.js:30 msgid "Scan barcode data here using wedge scanner" msgstr "" -#: templates/js/translated/barcode.js:31 +#: templates/js/translated/barcode.js:32 msgid "Enter barcode data" msgstr "输入条形码数据" -#: templates/js/translated/barcode.js:35 +#: templates/js/translated/barcode.js:39 msgid "Barcode" msgstr "条形码" -#: templates/js/translated/barcode.js:53 +#: templates/js/translated/barcode.js:96 msgid "Enter optional notes for stock transfer" msgstr "" -#: templates/js/translated/barcode.js:54 +#: templates/js/translated/barcode.js:97 msgid "Enter notes" msgstr "" -#: templates/js/translated/barcode.js:92 +#: templates/js/translated/barcode.js:135 msgid "Server error" msgstr "" -#: templates/js/translated/barcode.js:113 +#: templates/js/translated/barcode.js:156 msgid "Unknown response from server" msgstr "" -#: templates/js/translated/barcode.js:140 +#: templates/js/translated/barcode.js:183 #: templates/js/translated/modals.js:1046 msgid "Invalid server response" msgstr "" -#: templates/js/translated/barcode.js:233 +#: templates/js/translated/barcode.js:287 msgid "Scan barcode data below" msgstr "" -#: templates/js/translated/barcode.js:280 templates/navbar.html:101 +#: templates/js/translated/barcode.js:334 templates/navbar.html:109 msgid "Scan Barcode" msgstr "扫描条形码" -#: templates/js/translated/barcode.js:291 +#: templates/js/translated/barcode.js:345 msgid "No URL in response" msgstr "" -#: templates/js/translated/barcode.js:309 +#: templates/js/translated/barcode.js:363 msgid "Link Barcode to Stock Item" msgstr "" -#: templates/js/translated/barcode.js:332 +#: templates/js/translated/barcode.js:386 msgid "This will remove the association between this stock item and the barcode" msgstr "" -#: templates/js/translated/barcode.js:338 +#: templates/js/translated/barcode.js:392 msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:403 templates/js/translated/stock.js:991 +#: templates/js/translated/barcode.js:457 templates/js/translated/stock.js:998 msgid "Remove stock item" msgstr "" -#: templates/js/translated/barcode.js:445 +#: templates/js/translated/barcode.js:499 msgid "Check Stock Items into Location" msgstr "" -#: templates/js/translated/barcode.js:449 -#: templates/js/translated/barcode.js:581 +#: templates/js/translated/barcode.js:503 +#: templates/js/translated/barcode.js:635 msgid "Check In" msgstr "" -#: templates/js/translated/barcode.js:480 +#: templates/js/translated/barcode.js:534 msgid "No barcode provided" msgstr "" -#: templates/js/translated/barcode.js:515 +#: templates/js/translated/barcode.js:569 msgid "Stock Item already scanned" msgstr "" -#: templates/js/translated/barcode.js:519 +#: templates/js/translated/barcode.js:573 msgid "Stock Item already in this location" msgstr "" -#: templates/js/translated/barcode.js:526 +#: templates/js/translated/barcode.js:580 msgid "Added stock item" msgstr "" -#: templates/js/translated/barcode.js:533 +#: templates/js/translated/barcode.js:587 msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/translated/barcode.js:576 +#: templates/js/translated/barcode.js:630 msgid "Check Into Location" msgstr "" -#: templates/js/translated/barcode.js:639 +#: templates/js/translated/barcode.js:693 msgid "Barcode does not match a valid location" msgstr "" @@ -7873,12 +7942,12 @@ msgid "Download BOM Template" msgstr "" #: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286 -#: templates/js/translated/order.js:429 templates/js/translated/tables.js:53 +#: templates/js/translated/order.js:455 templates/js/translated/tables.js:53 msgid "Format" msgstr "" #: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287 -#: templates/js/translated/order.js:430 +#: templates/js/translated/order.js:456 msgid "Select file format" msgstr "" @@ -7954,75 +8023,84 @@ msgstr "" msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:739 +#: templates/js/translated/bom.js:763 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:773 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1407 +#: templates/js/translated/bom.js:777 templates/js/translated/build.js:1736 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:748 -msgid "Open subassembly" -msgstr "" - -#: templates/js/translated/bom.js:815 templates/js/translated/build.js:1433 +#: templates/js/translated/bom.js:845 templates/js/translated/build.js:1781 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:818 templates/js/translated/build.js:1436 +#: templates/js/translated/bom.js:849 templates/js/translated/build.js:1785 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:851 templates/js/translated/build.js:1787 +#: templates/js/translated/part.js:690 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:853 templates/js/translated/build.js:1789 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:828 +#: templates/js/translated/bom.js:867 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:843 +#: templates/js/translated/bom.js:882 msgid "Purchase Price Range" msgstr "" -#: templates/js/translated/bom.js:850 +#: templates/js/translated/bom.js:889 msgid "Purchase Price Average" msgstr "" -#: templates/js/translated/bom.js:899 templates/js/translated/bom.js:990 +#: templates/js/translated/bom.js:938 templates/js/translated/bom.js:1029 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:961 +#: templates/js/translated/bom.js:1000 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:963 +#: templates/js/translated/bom.js:1002 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:965 +#: templates/js/translated/bom.js:1004 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:967 templates/js/translated/bom.js:1153 +#: templates/js/translated/bom.js:1006 templates/js/translated/bom.js:1173 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:969 templates/js/translated/bom.js:1136 +#: templates/js/translated/bom.js:1008 templates/js/translated/bom.js:1156 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1076 templates/js/translated/build.js:1139 +#: templates/js/translated/bom.js:1103 templates/js/translated/build.js:1582 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1131 +#: templates/js/translated/bom.js:1151 msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1333 templates/js/translated/build.js:1391 +#: templates/js/translated/bom.js:1353 templates/js/translated/build.js:1720 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1355 +#: templates/js/translated/bom.js:1375 msgid "Inherited from parent BOM" msgstr "" @@ -8047,12 +8125,12 @@ msgid "Complete Build Order" msgstr "生产订单完成" #: templates/js/translated/build.js:215 templates/js/translated/stock.js:90 -#: templates/js/translated/stock.js:179 +#: templates/js/translated/stock.js:180 msgid "Next available serial number" msgstr "" #: templates/js/translated/build.js:217 templates/js/translated/stock.js:92 -#: templates/js/translated/stock.js:181 +#: templates/js/translated/stock.js:182 msgid "Latest serial number" msgstr "" @@ -8100,173 +8178,193 @@ msgstr "" msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:361 templates/js/translated/build.js:509 +#: templates/js/translated/build.js:363 templates/js/translated/build.js:515 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:362 templates/js/translated/build.js:510 +#: templates/js/translated/build.js:364 templates/js/translated/build.js:516 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:416 templates/js/translated/build.js:564 +#: templates/js/translated/build.js:418 templates/js/translated/build.js:570 msgid "Output" msgstr "" -#: templates/js/translated/build.js:432 +#: templates/js/translated/build.js:436 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:577 +#: templates/js/translated/build.js:583 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:666 +#: templates/js/translated/build.js:672 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:704 +#: templates/js/translated/build.js:710 msgid "Location not specified" msgstr "未指定仓储地点" -#: templates/js/translated/build.js:886 +#: templates/js/translated/build.js:1093 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1348 templates/js/translated/build.js:2155 -#: templates/js/translated/order.js:2179 +#: templates/js/translated/build.js:1162 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/build.js:1169 +msgid "No tracked BOM items for this build" +msgstr "" + +#: templates/js/translated/build.js:1191 +msgid "Completed Tests" +msgstr "" + +#: templates/js/translated/build.js:1196 +msgid "No required tests for this build" +msgstr "" + +#: templates/js/translated/build.js:1677 templates/js/translated/build.js:2506 +#: templates/js/translated/order.js:2425 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1350 templates/js/translated/build.js:2156 -#: templates/js/translated/order.js:2180 +#: templates/js/translated/build.js:1679 templates/js/translated/build.js:2507 +#: templates/js/translated/order.js:2426 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1368 +#: templates/js/translated/build.js:1697 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1378 +#: templates/js/translated/build.js:1707 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1403 +#: templates/js/translated/build.js:1732 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1749 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1445 templates/js/translated/build.js:1700 -#: templates/js/translated/build.js:2151 templates/js/translated/order.js:2446 +#: templates/js/translated/build.js:1775 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1777 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:1806 templates/js/translated/build.js:2051 +#: templates/js/translated/build.js:2502 templates/js/translated/order.js:2712 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1459 -msgid "loading" -msgstr "" - -#: templates/js/translated/build.js:1503 templates/js/translated/order.js:2526 +#: templates/js/translated/build.js:1854 templates/js/translated/order.js:2792 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1507 templates/stock_table.html:50 +#: templates/js/translated/build.js:1858 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1510 templates/js/translated/order.js:2519 +#: templates/js/translated/build.js:1861 templates/js/translated/order.js:2785 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1549 templates/js/translated/label.js:172 -#: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 +#: templates/js/translated/build.js:1900 templates/js/translated/label.js:172 +#: templates/js/translated/order.js:2001 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "选择商品" -#: templates/js/translated/build.js:1550 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1901 templates/js/translated/order.js:2002 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1950 templates/js/translated/order.js:1950 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1673 +#: templates/js/translated/build.js:2024 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1674 +#: templates/js/translated/build.js:2025 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1688 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:2039 templates/js/translated/order.js:2016 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1717 templates/js/translated/order.js:1805 -msgid "Confirm stock allocation" -msgstr "确认库存分配" - -#: templates/js/translated/build.js:1718 +#: templates/js/translated/build.js:2067 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1729 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:2078 templates/js/translated/order.js:2064 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1801 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:2150 templates/js/translated/order.js:2141 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1898 +#: templates/js/translated/build.js:2247 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1899 +#: templates/js/translated/build.js:2248 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1901 +#: templates/js/translated/build.js:2250 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1902 +#: templates/js/translated/build.js:2251 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1903 +#: templates/js/translated/build.js:2252 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:1924 +#: templates/js/translated/build.js:2273 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1962 +#: templates/js/translated/build.js:2313 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1979 templates/js/translated/part.js:1292 -#: templates/js/translated/part.js:1719 templates/js/translated/stock.js:1608 -#: templates/js/translated/stock.js:2261 +#: templates/js/translated/build.js:2330 templates/js/translated/part.js:1314 +#: templates/js/translated/part.js:1741 templates/js/translated/stock.js:1628 +#: templates/js/translated/stock.js:2281 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1999 +#: templates/js/translated/build.js:2350 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2063 templates/js/translated/stock.js:2473 +#: templates/js/translated/build.js:2378 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2414 templates/js/translated/stock.js:2523 msgid "No user information" msgstr "没有用户信息" -#: templates/js/translated/build.js:2075 +#: templates/js/translated/build.js:2426 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2483 msgid "No parts allocated for" msgstr "" @@ -8286,7 +8384,7 @@ msgstr "编辑制造商商品" msgid "Delete Manufacturer Part" msgstr "删除制造商商品" -#: templates/js/translated/company.js:165 templates/js/translated/order.js:248 +#: templates/js/translated/company.js:165 templates/js/translated/order.js:252 msgid "Add Supplier" msgstr "添加供应商" @@ -8331,34 +8429,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:556 -#: templates/js/translated/part.js:641 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:565 +#: templates/js/translated/part.js:650 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:560 -#: templates/js/translated/part.js:645 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:654 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:735 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:757 msgid "No parameters found" msgstr "无指定参数" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:777 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:799 msgid "Edit parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:778 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:800 msgid "Delete parameter" msgstr "删除参数" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:795 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:817 msgid "Edit Parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:807 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:829 msgid "Delete Parameter" msgstr "删除参数" @@ -8466,7 +8564,7 @@ msgstr "" msgid "NO" msgstr "" -#: templates/js/translated/helpers.js:305 +#: templates/js/translated/helpers.js:307 msgid "Notes updated" msgstr "" @@ -8475,7 +8573,7 @@ msgid "Labels sent to printer" msgstr "" #: templates/js/translated/label.js:60 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1015 +#: templates/js/translated/stock.js:1022 msgid "Select Stock Items" msgstr "选择库存项" @@ -8591,294 +8689,332 @@ msgstr "" msgid "Company ID" msgstr "公司ID" -#: templates/js/translated/model_renderers.js:115 +#: templates/js/translated/model_renderers.js:121 msgid "Stock ID" msgstr "" -#: templates/js/translated/model_renderers.js:141 +#: templates/js/translated/model_renderers.js:147 msgid "Location ID" msgstr "" -#: templates/js/translated/model_renderers.js:158 +#: templates/js/translated/model_renderers.js:165 msgid "Build ID" msgstr "" -#: templates/js/translated/model_renderers.js:257 -#: templates/js/translated/model_renderers.js:283 +#: templates/js/translated/model_renderers.js:262 +#: templates/js/translated/model_renderers.js:288 msgid "Order ID" msgstr "" -#: templates/js/translated/model_renderers.js:298 +#: templates/js/translated/model_renderers.js:302 msgid "Shipment ID" msgstr "" -#: templates/js/translated/model_renderers.js:318 +#: templates/js/translated/model_renderers.js:320 msgid "Category ID" msgstr "类别 ID" -#: templates/js/translated/model_renderers.js:361 +#: templates/js/translated/model_renderers.js:363 msgid "Manufacturer Part ID" msgstr "制造商商品ID" -#: templates/js/translated/model_renderers.js:390 +#: templates/js/translated/model_renderers.js:392 msgid "Supplier Part ID" msgstr "供应商商品ID" -#: templates/js/translated/notification.js:228 +#: templates/js/translated/notification.js:231 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:232 +#: templates/js/translated/notification.js:235 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:256 +#: templates/js/translated/notification.js:259 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:297 templates/notifications.html:10 +#: templates/js/translated/notification.js:300 templates/notifications.html:10 msgid "Notifications will load here" msgstr "" -#: templates/js/translated/order.js:75 +#: templates/js/translated/order.js:79 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/order.js:80 +#: templates/js/translated/order.js:84 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/order.js:120 +#: templates/js/translated/order.js:124 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/order.js:126 +#: templates/js/translated/order.js:130 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/order.js:181 +#: templates/js/translated/order.js:185 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/order.js:206 +#: templates/js/translated/order.js:210 msgid "Add Customer" msgstr "" -#: templates/js/translated/order.js:231 +#: templates/js/translated/order.js:235 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/order.js:426 +#: templates/js/translated/order.js:452 msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:520 +#: templates/js/translated/order.js:546 msgid "Select Line Items" msgstr "" -#: templates/js/translated/order.js:521 +#: templates/js/translated/order.js:547 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/order.js:541 templates/js/translated/order.js:640 +#: templates/js/translated/order.js:567 templates/js/translated/order.js:666 msgid "Add batch code" msgstr "" -#: templates/js/translated/order.js:547 templates/js/translated/order.js:651 +#: templates/js/translated/order.js:573 templates/js/translated/order.js:677 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/order.js:559 +#: templates/js/translated/order.js:585 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2064 +#: templates/js/translated/order.js:649 templates/js/translated/stock.js:2084 msgid "Stock Status" msgstr "" -#: templates/js/translated/order.js:712 +#: templates/js/translated/order.js:738 msgid "Order Code" msgstr "订单编码" -#: templates/js/translated/order.js:713 +#: templates/js/translated/order.js:739 msgid "Ordered" msgstr "" -#: templates/js/translated/order.js:715 +#: templates/js/translated/order.js:741 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/order.js:734 +#: templates/js/translated/order.js:760 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/order.js:735 +#: templates/js/translated/order.js:761 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:848 +#: templates/js/translated/order.js:951 templates/js/translated/part.js:870 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:950 templates/js/translated/order.js:1426 +#: templates/js/translated/order.js:976 templates/js/translated/order.js:1672 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:1074 templates/js/translated/order.js:2577 +#: templates/js/translated/order.js:1100 templates/js/translated/order.js:2844 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1104 templates/js/translated/order.js:2599 +#: templates/js/translated/order.js:1130 templates/js/translated/order.js:2866 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1117 templates/js/translated/order.js:2610 +#: templates/js/translated/order.js:1143 templates/js/translated/order.js:2877 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:1160 +#: templates/js/translated/order.js:1186 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:1187 templates/js/translated/order.js:2335 +#: templates/js/translated/order.js:1213 templates/js/translated/order.js:2601 msgid "Total" msgstr "" -#: templates/js/translated/order.js:1241 templates/js/translated/order.js:2360 -#: templates/js/translated/part.js:1936 templates/js/translated/part.js:2280 +#: templates/js/translated/order.js:1267 templates/js/translated/order.js:1469 +#: templates/js/translated/order.js:2626 templates/js/translated/order.js:3104 +#: templates/js/translated/part.js:1960 templates/js/translated/part.js:2313 msgid "Unit Price" msgstr "单价" -#: templates/js/translated/order.js:1256 templates/js/translated/order.js:2376 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1485 +#: templates/js/translated/order.js:2642 templates/js/translated/order.js:3120 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:1297 templates/js/translated/order.js:2418 -#: templates/js/translated/part.js:957 +#: templates/js/translated/order.js:1323 templates/js/translated/order.js:2684 +#: templates/js/translated/part.js:979 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:1003 +#: templates/js/translated/order.js:1382 templates/js/translated/part.js:1025 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1360 templates/js/translated/order.js:2532 +#: templates/js/translated/order.js:1386 templates/js/translated/order.js:2798 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:1361 templates/js/translated/order.js:2533 +#: templates/js/translated/order.js:1387 templates/js/translated/order.js:2799 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:1362 templates/js/translated/order.js:2537 +#: templates/js/translated/order.js:1388 templates/js/translated/order.js:2803 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1402 +#: templates/js/translated/order.js:1534 templates/js/translated/order.js:3169 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:1535 templates/js/translated/order.js:3170 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:1536 templates/js/translated/order.js:3171 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/order.js:1566 templates/js/translated/order.js:3201 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:1587 templates/js/translated/order.js:3222 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:1598 templates/js/translated/order.js:3233 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:1609 +msgid "No matching line" +msgstr "" + +#: templates/js/translated/order.js:1648 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1440 +#: templates/js/translated/order.js:1686 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1527 +#: templates/js/translated/order.js:1773 msgid "Edit shipment" msgstr "" -#: templates/js/translated/order.js:1530 +#: templates/js/translated/order.js:1776 msgid "Complete shipment" msgstr "" -#: templates/js/translated/order.js:1535 +#: templates/js/translated/order.js:1781 msgid "Delete shipment" msgstr "" -#: templates/js/translated/order.js:1555 +#: templates/js/translated/order.js:1801 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/order.js:1572 +#: templates/js/translated/order.js:1818 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/order.js:1606 +#: templates/js/translated/order.js:1852 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/order.js:1616 +#: templates/js/translated/order.js:1862 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/order.js:1640 +#: templates/js/translated/order.js:1886 msgid "Not shipped" msgstr "" -#: templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:1892 msgid "Tracking" msgstr "" -#: templates/js/translated/order.js:1806 +#: templates/js/translated/order.js:2051 +msgid "Confirm stock allocation" +msgstr "确认库存分配" + +#: templates/js/translated/order.js:2052 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/order.js:2014 +#: templates/js/translated/order.js:2260 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:2095 +#: templates/js/translated/order.js:2341 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2112 +#: templates/js/translated/order.js:2358 msgid "Confirm Delete Operation" msgstr "确认删除操作" -#: templates/js/translated/order.js:2113 +#: templates/js/translated/order.js:2359 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:2156 templates/js/translated/order.js:2245 -#: templates/js/translated/stock.js:1524 +#: templates/js/translated/order.js:2402 templates/js/translated/order.js:2491 +#: templates/js/translated/stock.js:1544 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/order.js:2164 templates/js/translated/order.js:2254 +#: templates/js/translated/order.js:2410 templates/js/translated/order.js:2500 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:2516 +#: templates/js/translated/order.js:2782 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:2522 +#: templates/js/translated/order.js:2788 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:2529 templates/js/translated/order.js:2719 +#: templates/js/translated/order.js:2795 templates/js/translated/order.js:2986 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:2541 +#: templates/js/translated/order.js:2807 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:2544 +#: templates/js/translated/order.js:2810 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:2625 +#: templates/js/translated/order.js:2892 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:2727 +#: templates/js/translated/order.js:2994 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:2741 +#: templates/js/translated/order.js:3008 msgid "No matching line items" msgstr "" +#: templates/js/translated/order.js:3244 +msgid "No matching lines" +msgstr "" + #: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "商品属性" @@ -8959,177 +9095,177 @@ msgstr "" msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:339 +#: templates/js/translated/part.js:340 msgid "Edit Part" msgstr "编辑商品" -#: templates/js/translated/part.js:341 +#: templates/js/translated/part.js:342 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:419 +#: templates/js/translated/part.js:423 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:421 +#: templates/js/translated/part.js:425 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:426 +#: templates/js/translated/part.js:430 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:428 +#: templates/js/translated/part.js:432 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:445 +#: templates/js/translated/part.js:449 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:455 +#: templates/js/translated/part.js:459 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:458 +#: templates/js/translated/part.js:462 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:483 +#: templates/js/translated/part.js:487 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:504 templates/js/translated/part.js:1375 -#: templates/js/translated/table_filters.js:434 +#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397 +#: templates/js/translated/table_filters.js:452 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:1387 +#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:548 templates/js/translated/part.js:633 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:642 msgid "Trackable part" msgstr "可追溯商品" -#: templates/js/translated/part.js:552 templates/js/translated/part.js:637 +#: templates/js/translated/part.js:561 templates/js/translated/part.js:646 msgid "Virtual part" msgstr "虚拟商品" -#: templates/js/translated/part.js:564 +#: templates/js/translated/part.js:573 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:568 +#: templates/js/translated/part.js:577 msgid "Salable part" msgstr "可销售商品" -#: templates/js/translated/part.js:683 +#: templates/js/translated/part.js:705 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1073 +#: templates/js/translated/part.js:1095 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1097 +#: templates/js/translated/part.js:1119 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1162 templates/js/translated/part.js:1458 +#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1201 +#: templates/js/translated/part.js:1223 msgid "Not available" msgstr "" -#: templates/js/translated/part.js:1352 +#: templates/js/translated/part.js:1374 msgid "No category" msgstr "没有分类" -#: templates/js/translated/part.js:1482 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2222 +#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1676 +#: templates/js/translated/stock.js:2242 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1498 +#: templates/js/translated/part.js:1520 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1673 templates/js/translated/stock.js:2241 +#: templates/js/translated/part.js:1695 templates/js/translated/stock.js:2261 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1737 +#: templates/js/translated/part.js:1759 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:2285 +#: templates/js/translated/part.js:1773 templates/js/translated/stock.js:2305 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1795 +#: templates/js/translated/part.js:1817 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1846 templates/js/translated/stock.js:1235 +#: templates/js/translated/part.js:1868 templates/js/translated/stock.js:1242 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1847 templates/js/translated/stock.js:1236 -#: templates/js/translated/stock.js:1482 +#: templates/js/translated/part.js:1869 templates/js/translated/stock.js:1243 +#: templates/js/translated/stock.js:1502 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1853 +#: templates/js/translated/part.js:1875 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1875 +#: templates/js/translated/part.js:1897 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1889 +#: templates/js/translated/part.js:1911 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1914 +#: templates/js/translated/part.js:1936 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1993 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1970 +#: templates/js/translated/part.js:1994 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:2108 msgid "Current Stock" msgstr "" -#: templates/js/translated/part.js:2108 +#: templates/js/translated/part.js:2141 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:2134 +#: templates/js/translated/part.js:2167 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:2204 +#: templates/js/translated/part.js:2237 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2223 +#: templates/js/translated/part.js:2256 msgid "Single Price Difference" msgstr "" @@ -9223,328 +9359,328 @@ msgstr "" msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:152 +#: templates/js/translated/stock.js:153 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:192 +#: templates/js/translated/stock.js:193 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:231 +#: templates/js/translated/stock.js:232 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:237 +#: templates/js/translated/stock.js:238 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:300 +#: templates/js/translated/stock.js:303 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:390 +#: templates/js/translated/stock.js:393 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:403 +#: templates/js/translated/stock.js:406 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:428 +#: templates/js/translated/stock.js:431 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:432 templates/js/translated/stock.js:433 +#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:449 +#: templates/js/translated/stock.js:452 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:472 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:478 +#: templates/js/translated/stock.js:481 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:604 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:602 +#: templates/js/translated/stock.js:605 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:679 +#: templates/js/translated/stock.js:682 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:680 +#: templates/js/translated/stock.js:683 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:682 +#: templates/js/translated/stock.js:685 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:683 +#: templates/js/translated/stock.js:686 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:769 +#: templates/js/translated/stock.js:772 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:770 +#: templates/js/translated/stock.js:773 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:865 +#: templates/js/translated/stock.js:868 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:866 +#: templates/js/translated/stock.js:869 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:872 +#: templates/js/translated/stock.js:875 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:876 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:877 +#: templates/js/translated/stock.js:880 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:881 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:882 +#: templates/js/translated/stock.js:885 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:883 users/models.py:214 +#: templates/js/translated/stock.js:886 users/models.py:216 msgid "Add" msgstr "添加" -#: templates/js/translated/stock.js:887 +#: templates/js/translated/stock.js:890 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:976 +#: templates/js/translated/stock.js:983 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1016 +#: templates/js/translated/stock.js:1023 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1174 +#: templates/js/translated/stock.js:1181 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1183 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1181 +#: templates/js/translated/stock.js:1188 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1228 +#: templates/js/translated/stock.js:1235 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1231 +#: templates/js/translated/stock.js:1238 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1257 +#: templates/js/translated/stock.js:1264 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1313 +#: templates/js/translated/stock.js:1320 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1465 +#: templates/js/translated/stock.js:1485 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1487 +#: templates/js/translated/stock.js:1507 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1516 +#: templates/js/translated/stock.js:1536 msgid "In production" msgstr "正在生产" -#: templates/js/translated/stock.js:1520 +#: templates/js/translated/stock.js:1540 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1528 +#: templates/js/translated/stock.js:1548 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1534 +#: templates/js/translated/stock.js:1554 msgid "No stock location set" msgstr "未设置仓储地点" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1712 msgid "Stock item is in production" msgstr "库存品正在生产" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1717 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1700 +#: templates/js/translated/stock.js:1720 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1704 +#: templates/js/translated/stock.js:1724 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1706 +#: templates/js/translated/stock.js:1726 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1732 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1714 +#: templates/js/translated/stock.js:1734 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1716 +#: templates/js/translated/stock.js:1736 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1741 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/stock.js:1748 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1730 +#: templates/js/translated/stock.js:1750 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1732 +#: templates/js/translated/stock.js:1752 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1736 +#: templates/js/translated/stock.js:1756 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1787 +#: templates/js/translated/stock.js:1807 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1869 +#: templates/js/translated/stock.js:1889 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1907 +#: templates/js/translated/stock.js:1927 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2079 +#: templates/js/translated/stock.js:2099 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2113 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2094 +#: templates/js/translated/stock.js:2114 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2332 +#: templates/js/translated/stock.js:2369 msgid "Details" msgstr "详情" -#: templates/js/translated/stock.js:2357 +#: templates/js/translated/stock.js:2385 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2407 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2376 +#: templates/js/translated/stock.js:2426 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2395 +#: templates/js/translated/stock.js:2445 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2413 +#: templates/js/translated/stock.js:2463 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2436 +#: templates/js/translated/stock.js:2486 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2444 +#: templates/js/translated/stock.js:2494 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2485 -msgid "Edit tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2486 -msgid "Delete tracking entry" -msgstr "" - -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2570 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2588 +#: templates/js/translated/stock.js:2621 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2624 +#: templates/js/translated/stock.js:2657 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2625 +#: templates/js/translated/stock.js:2658 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2627 +#: templates/js/translated/stock.js:2660 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2628 +#: templates/js/translated/stock.js:2661 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2629 -msgid "The Stock Item is serialized and does not belong to another item" +#: templates/js/translated/stock.js:2662 +msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2642 +#: templates/js/translated/stock.js:2663 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:2676 msgid "Select part to install" msgstr "" @@ -9575,12 +9711,12 @@ msgstr "" #: templates/js/translated/table_filters.js:121 #: templates/js/translated/table_filters.js:122 -#: templates/js/translated/table_filters.js:411 +#: templates/js/translated/table_filters.js:429 msgid "Include subcategories" msgstr "" #: templates/js/translated/table_filters.js:126 -#: templates/js/translated/table_filters.js:450 +#: templates/js/translated/table_filters.js:468 msgid "Subscribed" msgstr "" @@ -9617,12 +9753,12 @@ msgid "Serial number" msgstr "" #: templates/js/translated/table_filters.js:152 -#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:243 msgid "Batch code" msgstr "" #: templates/js/translated/table_filters.js:163 -#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:401 msgid "Active parts" msgstr "" @@ -9691,68 +9827,88 @@ msgstr "" msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:243 +#: templates/js/translated/table_filters.js:238 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:246 +msgid "Tracked" +msgstr "" + +#: templates/js/translated/table_filters.js:247 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:252 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:244 +#: templates/js/translated/table_filters.js:253 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:253 +#: templates/js/translated/table_filters.js:262 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:259 +#: templates/js/translated/table_filters.js:268 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:285 +#: templates/js/translated/table_filters.js:280 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:284 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:303 msgid "Build status" msgstr "生产状态" -#: templates/js/translated/table_filters.js:298 -#: templates/js/translated/table_filters.js:339 +#: templates/js/translated/table_filters.js:316 +#: templates/js/translated/table_filters.js:357 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:315 -#: templates/js/translated/table_filters.js:326 -#: templates/js/translated/table_filters.js:356 +#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:344 +#: templates/js/translated/table_filters.js:374 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:331 -#: templates/js/translated/table_filters.js:348 -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:349 +#: templates/js/translated/table_filters.js:366 +#: templates/js/translated/table_filters.js:379 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:412 +#: templates/js/translated/table_filters.js:430 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:416 +#: templates/js/translated/table_filters.js:434 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:417 +#: templates/js/translated/table_filters.js:435 msgid "Part has internal part number" msgstr "商品有内部编号" -#: templates/js/translated/table_filters.js:422 +#: templates/js/translated/table_filters.js:440 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:430 +#: templates/js/translated/table_filters.js:448 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:438 +#: templates/js/translated/table_filters.js:456 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:462 +#: templates/js/translated/table_filters.js:480 msgid "Purchasable" msgstr "" @@ -9792,7 +9948,7 @@ msgstr "" msgid "rows" msgstr "" -#: templates/js/translated/tables.js:447 templates/navbar.html:94 +#: templates/js/translated/tables.js:447 templates/navbar.html:102 #: templates/search.html:8 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" @@ -9822,38 +9978,34 @@ msgstr "" msgid "All" msgstr "" -#: templates/navbar.html:42 +#: templates/navbar.html:45 msgid "Buy" msgstr "采购" -#: templates/navbar.html:54 +#: templates/navbar.html:57 msgid "Sell" msgstr "销售" -#: templates/navbar.html:108 +#: templates/navbar.html:116 msgid "Show Notifications" msgstr "" -#: templates/navbar.html:111 +#: templates/navbar.html:119 msgid "New Notifications" msgstr "" -#: templates/navbar.html:132 +#: templates/navbar.html:140 msgid "Logout" msgstr "" -#: templates/navbar.html:134 +#: templates/navbar.html:142 msgid "Login" msgstr "" -#: templates/navbar.html:154 +#: templates/navbar.html:163 msgid "About InvenTree" msgstr "" -#: templates/navbar_demo.html:5 -msgid "InvenTree demo mode" -msgstr "" - #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" msgstr "" @@ -10046,35 +10198,35 @@ msgstr "权限" msgid "Important dates" msgstr "重要日期" -#: users/models.py:201 +#: users/models.py:203 msgid "Permission set" msgstr "权限设置" -#: users/models.py:209 +#: users/models.py:211 msgid "Group" msgstr "群组" -#: users/models.py:212 +#: users/models.py:214 msgid "View" msgstr "视图" -#: users/models.py:212 +#: users/models.py:214 msgid "Permission to view items" msgstr "查看项目权限" -#: users/models.py:214 +#: users/models.py:216 msgid "Permission to add items" msgstr "添加项目权限" -#: users/models.py:216 +#: users/models.py:218 msgid "Change" msgstr "更改" -#: users/models.py:216 +#: users/models.py:218 msgid "Permissions to edit items" msgstr "编辑项目权限" -#: users/models.py:218 +#: users/models.py:220 msgid "Permission to delete items" msgstr "删除项目权限" diff --git a/InvenTree/order/admin.py b/InvenTree/order/admin.py index e98b31939a..0de28d5668 100644 --- a/InvenTree/order/admin.py +++ b/InvenTree/order/admin.py @@ -8,11 +8,35 @@ from import_export.admin import ImportExportModelAdmin from import_export.resources import ModelResource from import_export.fields import Field -from .models import PurchaseOrder, PurchaseOrderLineItem -from .models import SalesOrder, SalesOrderLineItem +from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderExtraLine +from .models import SalesOrder, SalesOrderLineItem, SalesOrderExtraLine from .models import SalesOrderShipment, SalesOrderAllocation +# region general classes +class GeneralExtraLineAdmin: + list_display = ( + 'order', + 'quantity', + 'reference' + ) + + search_fields = [ + 'order__reference', + 'order__customer__name', + 'reference', + ] + + autocomplete_fields = ('order', ) + + +class GeneralExtraLineMeta: + skip_unchanged = True + report_skipped = False + clean_model_instances = True +# endregion + + class PurchaseOrderLineItemInlineAdmin(admin.StackedInline): model = PurchaseOrderLineItem extra = 0 @@ -68,8 +92,8 @@ class SalesOrderAdmin(ImportExportModelAdmin): autocomplete_fields = ('customer',) -class POLineItemResource(ModelResource): - """ Class for managing import / export of POLineItem data """ +class PurchaseOrderLineItemResource(ModelResource): + """ Class for managing import / export of PurchaseOrderLineItem data """ part_name = Field(attribute='part__part__name', readonly=True) @@ -86,9 +110,16 @@ class POLineItemResource(ModelResource): clean_model_instances = True -class SOLineItemResource(ModelResource): +class PurchaseOrderExtraLineResource(ModelResource): + """ Class for managing import / export of PurchaseOrderExtraLine data """ + + class Meta(GeneralExtraLineMeta): + model = PurchaseOrderExtraLine + + +class SalesOrderLineItemResource(ModelResource): """ - Class for managing import / export of SOLineItem data + Class for managing import / export of SalesOrderLineItem data """ part_name = Field(attribute='part__name', readonly=True) @@ -117,9 +148,16 @@ class SOLineItemResource(ModelResource): clean_model_instances = True +class SalesOrderExtraLineResource(ModelResource): + """ Class for managing import / export of SalesOrderExtraLine data """ + + class Meta(GeneralExtraLineMeta): + model = SalesOrderExtraLine + + class PurchaseOrderLineItemAdmin(ImportExportModelAdmin): - resource_class = POLineItemResource + resource_class = PurchaseOrderLineItemResource list_display = ( 'order', @@ -133,9 +171,14 @@ class PurchaseOrderLineItemAdmin(ImportExportModelAdmin): autocomplete_fields = ('order', 'part', 'destination',) +class PurchaseOrderExtraLineAdmin(GeneralExtraLineAdmin, ImportExportModelAdmin): + + resource_class = PurchaseOrderExtraLineResource + + class SalesOrderLineItemAdmin(ImportExportModelAdmin): - resource_class = SOLineItemResource + resource_class = SalesOrderLineItemResource list_display = ( 'order', @@ -154,6 +197,11 @@ class SalesOrderLineItemAdmin(ImportExportModelAdmin): autocomplete_fields = ('order', 'part',) +class SalesOrderExtraLineAdmin(GeneralExtraLineAdmin, ImportExportModelAdmin): + + resource_class = SalesOrderExtraLineResource + + class SalesOrderShipmentAdmin(ImportExportModelAdmin): list_display = [ @@ -184,9 +232,11 @@ class SalesOrderAllocationAdmin(ImportExportModelAdmin): admin.site.register(PurchaseOrder, PurchaseOrderAdmin) admin.site.register(PurchaseOrderLineItem, PurchaseOrderLineItemAdmin) +admin.site.register(PurchaseOrderExtraLine, PurchaseOrderExtraLineAdmin) admin.site.register(SalesOrder, SalesOrderAdmin) admin.site.register(SalesOrderLineItem, SalesOrderLineItemAdmin) +admin.site.register(SalesOrderExtraLine, SalesOrderExtraLineAdmin) admin.site.register(SalesOrderShipment, SalesOrderShipmentAdmin) admin.site.register(SalesOrderAllocation, SalesOrderAllocationAdmin) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 8c333734ed..a54c370121 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -5,7 +5,7 @@ JSON API for the Order app # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.conf.urls import url, include +from django.urls import include, path, re_path from django.db.models import Q, F from django_filters import rest_framework as rest_filters @@ -20,16 +20,68 @@ from InvenTree.helpers import str2bool, DownloadFile from InvenTree.api import AttachmentMixin from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus -from order.admin import POLineItemResource +from order.admin import PurchaseOrderLineItemResource import order.models as models import order.serializers as serializers from part.models import Part from users.models import Owner -class POFilter(rest_filters.FilterSet): +class GeneralExtraLineList: """ - Custom API filters for the POList endpoint + General template for ExtraLine API classes + """ + + def get_serializer(self, *args, **kwargs): + try: + params = self.request.query_params + + kwargs['order_detail'] = str2bool(params.get('order_detail', False)) + except AttributeError: + pass + + kwargs['context'] = self.get_serializer_context() + + return self.serializer_class(*args, **kwargs) + + def get_queryset(self, *args, **kwargs): + + queryset = super().get_queryset(*args, **kwargs) + + queryset = queryset.prefetch_related( + 'order', + ) + + return queryset + + filter_backends = [ + rest_filters.DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter + ] + + ordering_fields = [ + 'title', + 'quantity', + 'note', + 'reference', + ] + + search_fields = [ + 'title', + 'quantity', + 'note', + 'reference' + ] + + filter_fields = [ + 'order', + ] + + +class PurchaseOrderFilter(rest_filters.FilterSet): + """ + Custom API filters for the PurchaseOrderList endpoint """ assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') @@ -58,16 +110,16 @@ class POFilter(rest_filters.FilterSet): ] -class POList(generics.ListCreateAPIView): +class PurchaseOrderList(generics.ListCreateAPIView): """ API endpoint for accessing a list of PurchaseOrder objects - - GET: Return list of PO objects (with filters) + - GET: Return list of PurchaseOrder objects (with filters) - POST: Create a new PurchaseOrder object """ queryset = models.PurchaseOrder.objects.all() - serializer_class = serializers.POSerializer - filterset_class = POFilter + serializer_class = serializers.PurchaseOrderSerializer + filterset_class = PurchaseOrderFilter def create(self, request, *args, **kwargs): """ @@ -104,7 +156,7 @@ class POList(generics.ListCreateAPIView): 'lines', ) - queryset = serializers.POSerializer.annotate_queryset(queryset) + queryset = serializers.PurchaseOrderSerializer.annotate_queryset(queryset) return queryset @@ -202,11 +254,11 @@ class POList(generics.ListCreateAPIView): ordering = '-creation_date' -class PODetail(generics.RetrieveUpdateDestroyAPIView): +class PurchaseOrderDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a PurchaseOrder object """ queryset = models.PurchaseOrder.objects.all() - serializer_class = serializers.POSerializer + serializer_class = serializers.PurchaseOrderSerializer def get_serializer(self, *args, **kwargs): @@ -229,12 +281,12 @@ class PODetail(generics.RetrieveUpdateDestroyAPIView): 'lines', ) - queryset = serializers.POSerializer.annotate_queryset(queryset) + queryset = serializers.PurchaseOrderSerializer.annotate_queryset(queryset) return queryset -class POReceive(generics.CreateAPIView): +class PurchaseOrderReceive(generics.CreateAPIView): """ API endpoint to receive stock items against a purchase order. @@ -249,7 +301,7 @@ class POReceive(generics.CreateAPIView): queryset = models.PurchaseOrderLineItem.objects.none() - serializer_class = serializers.POReceiveSerializer + serializer_class = serializers.PurchaseOrderReceiveSerializer def get_serializer_context(self): @@ -266,9 +318,9 @@ class POReceive(generics.CreateAPIView): return context -class POLineItemFilter(rest_filters.FilterSet): +class PurchaseOrderLineItemFilter(rest_filters.FilterSet): """ - Custom filters for the POLineItemList endpoint + Custom filters for the PurchaseOrderLineItemList endpoint """ class Meta: @@ -318,22 +370,22 @@ class POLineItemFilter(rest_filters.FilterSet): return queryset -class POLineItemList(generics.ListCreateAPIView): - """ API endpoint for accessing a list of POLineItem objects +class PurchaseOrderLineItemList(generics.ListCreateAPIView): + """ API endpoint for accessing a list of PurchaseOrderLineItem objects - - GET: Return a list of PO Line Item objects + - GET: Return a list of PurchaseOrder Line Item objects - POST: Create a new PurchaseOrderLineItem object """ queryset = models.PurchaseOrderLineItem.objects.all() - serializer_class = serializers.POLineItemSerializer - filterset_class = POLineItemFilter + serializer_class = serializers.PurchaseOrderLineItemSerializer + filterset_class = PurchaseOrderLineItemFilter def get_queryset(self, *args, **kwargs): queryset = super().get_queryset(*args, **kwargs) - queryset = serializers.POLineItemSerializer.annotate_queryset(queryset) + queryset = serializers.PurchaseOrderLineItemSerializer.annotate_queryset(queryset) return queryset @@ -382,7 +434,7 @@ class POLineItemList(generics.ListCreateAPIView): export_format = str(export_format).strip().lower() if export_format in ['csv', 'tsv', 'xls', 'xlsx']: - dataset = POLineItemResource().export(queryset=queryset) + dataset = PurchaseOrderLineItemResource().export(queryset=queryset) filedata = dataset.export(export_format) @@ -432,30 +484,46 @@ class POLineItemList(generics.ListCreateAPIView): ] -class POLineItemDetail(generics.RetrieveUpdateDestroyAPIView): +class PurchaseOrderLineItemDetail(generics.RetrieveUpdateDestroyAPIView): """ Detail API endpoint for PurchaseOrderLineItem object """ queryset = models.PurchaseOrderLineItem.objects.all() - serializer_class = serializers.POLineItemSerializer + serializer_class = serializers.PurchaseOrderLineItemSerializer def get_queryset(self): queryset = super().get_queryset() - queryset = serializers.POLineItemSerializer.annotate_queryset(queryset) + queryset = serializers.PurchaseOrderLineItemSerializer.annotate_queryset(queryset) return queryset -class SOAttachmentList(generics.ListCreateAPIView, AttachmentMixin): +class PurchaseOrderExtraLineList(GeneralExtraLineList, generics.ListCreateAPIView): + """ + API endpoint for accessing a list of PurchaseOrderExtraLine objects. + """ + + queryset = models.PurchaseOrderExtraLine.objects.all() + serializer_class = serializers.PurchaseOrderExtraLineSerializer + + +class PurchaseOrderExtraLineDetail(generics.RetrieveUpdateDestroyAPIView): + """ API endpoint for detail view of a PurchaseOrderExtraLine object """ + + queryset = models.PurchaseOrderExtraLine.objects.all() + serializer_class = serializers.PurchaseOrderExtraLineSerializer + + +class SalesOrderAttachmentList(generics.ListCreateAPIView, AttachmentMixin): """ API endpoint for listing (and creating) a SalesOrderAttachment (file upload) """ queryset = models.SalesOrderAttachment.objects.all() - serializer_class = serializers.SOAttachmentSerializer + serializer_class = serializers.SalesOrderAttachmentSerializer filter_backends = [ rest_filters.DjangoFilterBackend, @@ -466,20 +534,20 @@ class SOAttachmentList(generics.ListCreateAPIView, AttachmentMixin): ] -class SOAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin): +class SalesOrderAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin): """ Detail endpoint for SalesOrderAttachment """ queryset = models.SalesOrderAttachment.objects.all() - serializer_class = serializers.SOAttachmentSerializer + serializer_class = serializers.SalesOrderAttachmentSerializer -class SOList(generics.ListCreateAPIView): +class SalesOrderList(generics.ListCreateAPIView): """ API endpoint for accessing a list of SalesOrder objects. - - GET: Return list of SO objects (with filters) + - GET: Return list of SalesOrder objects (with filters) - POST: Create a new SalesOrder """ @@ -616,7 +684,7 @@ class SOList(generics.ListCreateAPIView): ordering = '-creation_date' -class SODetail(generics.RetrieveUpdateDestroyAPIView): +class SalesOrderDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a SalesOrder object. """ @@ -646,9 +714,9 @@ class SODetail(generics.RetrieveUpdateDestroyAPIView): return queryset -class SOLineItemFilter(rest_filters.FilterSet): +class SalesOrderLineItemFilter(rest_filters.FilterSet): """ - Custom filters for SOLineItemList endpoint + Custom filters for SalesOrderLineItemList endpoint """ class Meta: @@ -679,14 +747,14 @@ class SOLineItemFilter(rest_filters.FilterSet): return queryset -class SOLineItemList(generics.ListCreateAPIView): +class SalesOrderLineItemList(generics.ListCreateAPIView): """ API endpoint for accessing a list of SalesOrderLineItem objects. """ queryset = models.SalesOrderLineItem.objects.all() - serializer_class = serializers.SOLineItemSerializer - filterset_class = SOLineItemFilter + serializer_class = serializers.SalesOrderLineItemSerializer + filterset_class = SalesOrderLineItemFilter def get_serializer(self, *args, **kwargs): @@ -743,11 +811,27 @@ class SOLineItemList(generics.ListCreateAPIView): ] -class SOLineItemDetail(generics.RetrieveUpdateDestroyAPIView): +class SalesOrderExtraLineList(GeneralExtraLineList, generics.ListCreateAPIView): + """ + API endpoint for accessing a list of SalesOrderExtraLine objects. + """ + + queryset = models.SalesOrderExtraLine.objects.all() + serializer_class = serializers.SalesOrderExtraLineSerializer + + +class SalesOrderExtraLineDetail(generics.RetrieveUpdateDestroyAPIView): + """ API endpoint for detail view of a SalesOrderExtraLine object """ + + queryset = models.SalesOrderExtraLine.objects.all() + serializer_class = serializers.SalesOrderExtraLineSerializer + + +class SalesOrderLineItemDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a SalesOrderLineItem object """ queryset = models.SalesOrderLineItem.objects.all() - serializer_class = serializers.SOLineItemSerializer + serializer_class = serializers.SalesOrderLineItemSerializer class SalesOrderComplete(generics.CreateAPIView): @@ -779,7 +863,7 @@ class SalesOrderAllocateSerials(generics.CreateAPIView): """ queryset = models.SalesOrder.objects.none() - serializer_class = serializers.SOSerialAllocationSerializer + serializer_class = serializers.SalesOrderSerialAllocationSerializer def get_serializer_context(self): @@ -801,11 +885,11 @@ class SalesOrderAllocate(generics.CreateAPIView): API endpoint to allocate stock items against a SalesOrder - The SalesOrder is specified in the URL - - See the SOShipmentAllocationSerializer class + - See the SalesOrderShipmentAllocationSerializer class """ queryset = models.SalesOrder.objects.none() - serializer_class = serializers.SOShipmentAllocationSerializer + serializer_class = serializers.SalesOrderShipmentAllocationSerializer def get_serializer_context(self): @@ -822,7 +906,7 @@ class SalesOrderAllocate(generics.CreateAPIView): return ctx -class SOAllocationDetail(generics.RetrieveUpdateDestroyAPIView): +class SalesOrderAllocationDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detali view of a SalesOrderAllocation object """ @@ -831,7 +915,7 @@ class SOAllocationDetail(generics.RetrieveUpdateDestroyAPIView): serializer_class = serializers.SalesOrderAllocationSerializer -class SOAllocationList(generics.ListAPIView): +class SalesOrderAllocationList(generics.ListAPIView): """ API endpoint for listing SalesOrderAllocation objects """ @@ -909,9 +993,9 @@ class SOAllocationList(generics.ListAPIView): ] -class SOShipmentFilter(rest_filters.FilterSet): +class SalesOrderShipmentFilter(rest_filters.FilterSet): """ - Custom filterset for the SOShipmentList endpoint + Custom filterset for the SalesOrderShipmentList endpoint """ shipped = rest_filters.BooleanFilter(label='shipped', method='filter_shipped') @@ -934,21 +1018,21 @@ class SOShipmentFilter(rest_filters.FilterSet): ] -class SOShipmentList(generics.ListCreateAPIView): +class SalesOrderShipmentList(generics.ListCreateAPIView): """ API list endpoint for SalesOrderShipment model """ queryset = models.SalesOrderShipment.objects.all() serializer_class = serializers.SalesOrderShipmentSerializer - filterset_class = SOShipmentFilter + filterset_class = SalesOrderShipmentFilter filter_backends = [ rest_filters.DjangoFilterBackend, ] -class SOShipmentDetail(generics.RetrieveUpdateDestroyAPIView): +class SalesOrderShipmentDetail(generics.RetrieveUpdateDestroyAPIView): """ API detail endpooint for SalesOrderShipment model """ @@ -957,7 +1041,7 @@ class SOShipmentDetail(generics.RetrieveUpdateDestroyAPIView): serializer_class = serializers.SalesOrderShipmentSerializer -class SOShipmentComplete(generics.CreateAPIView): +class SalesOrderShipmentComplete(generics.CreateAPIView): """ API endpoint for completing (shipping) a SalesOrderShipment """ @@ -983,13 +1067,13 @@ class SOShipmentComplete(generics.CreateAPIView): return ctx -class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): +class PurchaseOrderAttachmentList(generics.ListCreateAPIView, AttachmentMixin): """ API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload) """ queryset = models.PurchaseOrderAttachment.objects.all() - serializer_class = serializers.POAttachmentSerializer + serializer_class = serializers.PurchaseOrderAttachmentSerializer filter_backends = [ rest_filters.DjangoFilterBackend, @@ -1000,78 +1084,90 @@ class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): ] -class POAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin): +class PurchaseOrderAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin): """ Detail endpoint for a PurchaseOrderAttachment """ queryset = models.PurchaseOrderAttachment.objects.all() - serializer_class = serializers.POAttachmentSerializer + serializer_class = serializers.PurchaseOrderAttachmentSerializer order_api_urls = [ # API endpoints for purchase orders - url(r'^po/', include([ + re_path(r'^po/', include([ # Purchase order attachments - url(r'attachment/', include([ - url(r'^(?P\d+)/$', POAttachmentDetail.as_view(), name='api-po-attachment-detail'), - url(r'^.*$', POAttachmentList.as_view(), name='api-po-attachment-list'), + re_path(r'attachment/', include([ + path('/', PurchaseOrderAttachmentDetail.as_view(), name='api-po-attachment-detail'), + re_path(r'^.*$', PurchaseOrderAttachmentList.as_view(), name='api-po-attachment-list'), ])), # Individual purchase order detail URLs - url(r'^(?P\d+)/', include([ - url(r'^receive/', POReceive.as_view(), name='api-po-receive'), - url(r'.*$', PODetail.as_view(), name='api-po-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^receive/', PurchaseOrderReceive.as_view(), name='api-po-receive'), + re_path(r'.*$', PurchaseOrderDetail.as_view(), name='api-po-detail'), ])), # Purchase order list - url(r'^.*$', POList.as_view(), name='api-po-list'), + re_path(r'^.*$', PurchaseOrderList.as_view(), name='api-po-list'), ])), # API endpoints for purchase order line items - url(r'^po-line/', include([ - url(r'^(?P\d+)/$', POLineItemDetail.as_view(), name='api-po-line-detail'), - url(r'^.*$', POLineItemList.as_view(), name='api-po-line-list'), + re_path(r'^po-line/', include([ + path('/', PurchaseOrderLineItemDetail.as_view(), name='api-po-line-detail'), + re_path(r'^.*$', PurchaseOrderLineItemList.as_view(), name='api-po-line-list'), ])), - # API endpoints for sales orders - url(r'^so/', include([ - url(r'attachment/', include([ - url(r'^(?P\d+)/$', SOAttachmentDetail.as_view(), name='api-so-attachment-detail'), - url(r'^.*$', SOAttachmentList.as_view(), name='api-so-attachment-list'), + # API endpoints for purchase order extra line + re_path(r'^po-extra-line/', include([ + path('/', PurchaseOrderExtraLineDetail.as_view(), name='api-po-extra-line-detail'), + path('', PurchaseOrderExtraLineList.as_view(), name='api-po-extra-line-list'), + ])), + + # API endpoints for sales ordesr + re_path(r'^so/', include([ + re_path(r'attachment/', include([ + path('/', SalesOrderAttachmentDetail.as_view(), name='api-so-attachment-detail'), + re_path(r'^.*$', SalesOrderAttachmentList.as_view(), name='api-so-attachment-list'), ])), - url(r'^shipment/', include([ - url(r'^(?P\d+)/', include([ - url(r'^ship/$', SOShipmentComplete.as_view(), name='api-so-shipment-ship'), - url(r'^.*$', SOShipmentDetail.as_view(), name='api-so-shipment-detail'), + re_path(r'^shipment/', include([ + re_path(r'^(?P\d+)/', include([ + path('ship/', SalesOrderShipmentComplete.as_view(), name='api-so-shipment-ship'), + re_path(r'^.*$', SalesOrderShipmentDetail.as_view(), name='api-so-shipment-detail'), ])), - url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'), + re_path(r'^.*$', SalesOrderShipmentList.as_view(), name='api-so-shipment-list'), ])), # Sales order detail view - url(r'^(?P\d+)/', include([ - url(r'^complete/', SalesOrderComplete.as_view(), name='api-so-complete'), - url(r'^allocate/', SalesOrderAllocate.as_view(), name='api-so-allocate'), - url(r'^allocate-serials/', SalesOrderAllocateSerials.as_view(), name='api-so-allocate-serials'), - url(r'^.*$', SODetail.as_view(), name='api-so-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^complete/', SalesOrderComplete.as_view(), name='api-so-complete'), + re_path(r'^allocate/', SalesOrderAllocate.as_view(), name='api-so-allocate'), + re_path(r'^allocate-serials/', SalesOrderAllocateSerials.as_view(), name='api-so-allocate-serials'), + re_path(r'^.*$', SalesOrderDetail.as_view(), name='api-so-detail'), ])), # Sales order list view - url(r'^.*$', SOList.as_view(), name='api-so-list'), + re_path(r'^.*$', SalesOrderList.as_view(), name='api-so-list'), ])), # API endpoints for sales order line items - url(r'^so-line/', include([ - url(r'^(?P\d+)/$', SOLineItemDetail.as_view(), name='api-so-line-detail'), - url(r'^$', SOLineItemList.as_view(), name='api-so-line-list'), + re_path(r'^so-line/', include([ + path('/', SalesOrderLineItemDetail.as_view(), name='api-so-line-detail'), + path('', SalesOrderLineItemList.as_view(), name='api-so-line-list'), + ])), + + # API endpoints for sales order extra line + re_path(r'^so-extra-line/', include([ + path('/', SalesOrderExtraLineDetail.as_view(), name='api-so-extra-line-detail'), + path('', SalesOrderExtraLineList.as_view(), name='api-so-extra-line-list'), ])), # API endpoints for sales order allocations - url(r'^so-allocation/', include([ - url(r'^(?P\d+)/$', SOAllocationDetail.as_view(), name='api-so-allocation-detail'), - url(r'^.*$', SOAllocationList.as_view(), name='api-so-allocation-list'), + re_path(r'^so-allocation/', include([ + path('/', SalesOrderAllocationDetail.as_view(), name='api-so-allocation-detail'), + re_path(r'^.*$', SalesOrderAllocationList.as_view(), name='api-so-allocation-list'), ])), ] diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index 33044d8440..d6b99b7fd9 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -6,7 +6,7 @@ Django Forms for interacting with Order objects from __future__ import unicode_literals from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from InvenTree.forms import HelperForm from InvenTree.fields import InvenTreeMoneyField diff --git a/InvenTree/order/migrations/0058_auto_20211126_1210.py b/InvenTree/order/migrations/0058_auto_20211126_1210.py index a1836ff380..6ba2430af9 100644 --- a/InvenTree/order/migrations/0058_auto_20211126_1210.py +++ b/InvenTree/order/migrations/0058_auto_20211126_1210.py @@ -33,7 +33,7 @@ def calculate_shipped_quantity(apps, schema_editor): part=item.part ) - q = sum([item.quantity for item in items]) + q = sum(item.quantity for item in items) item.shipped = q diff --git a/InvenTree/order/migrations/0064_purchaseorderextraline_salesorderextraline.py b/InvenTree/order/migrations/0064_purchaseorderextraline_salesorderextraline.py new file mode 100644 index 0000000000..53bf0621ed --- /dev/null +++ b/InvenTree/order/migrations/0064_purchaseorderextraline_salesorderextraline.py @@ -0,0 +1,109 @@ +# Generated by Django 3.2.12 on 2022-03-27 01:11 + +import InvenTree.fields +import django.core.validators +from django.core import serializers +from django.db import migrations, models +import django.db.models.deletion +import djmoney.models.fields +import djmoney.models.validators + + +def _convert_model(apps, line_item_ref, extra_line_ref, price_ref): + """Convert the OrderLineItem instances if applicable to new ExtraLine instances""" + OrderLineItem = apps.get_model('order', line_item_ref) + OrderExtraLine = apps.get_model('order', extra_line_ref) + + items_to_change = OrderLineItem.objects.filter(part=None) + if items_to_change.count() == 0: + return + + print(f'\nFound {items_to_change.count()} old {line_item_ref} instance(s)') + print(f'Starting to convert - currently at {OrderExtraLine.objects.all().count()} {extra_line_ref} / {OrderLineItem.objects.all().count()} {line_item_ref} instance(s)') + for lineItem in items_to_change: + newitem = OrderExtraLine( + order=lineItem.order, + notes=lineItem.notes, + price=getattr(lineItem, price_ref), + quantity=lineItem.quantity, + reference=lineItem.reference, + ) + newitem.context = {'migration': serializers.serialize('json', [lineItem, ])} + newitem.save() + + lineItem.delete() + print(f'Done converting line items - now at {OrderExtraLine.objects.all().count()} {extra_line_ref} / {OrderLineItem.objects.all().count()} {line_item_ref} instance(s)') + + +def _reconvert_model(apps, line_item_ref, extra_line_ref): + """Convert ExtraLine instances back to OrderLineItem instances""" + OrderLineItem = apps.get_model('order', line_item_ref) + OrderExtraLine = apps.get_model('order', extra_line_ref) + + print(f'\nStarting to convert - currently at {OrderExtraLine.objects.all().count()} {extra_line_ref} / {OrderLineItem.objects.all().count()} {line_item_ref} instance(s)') + for extra_line in OrderExtraLine.objects.all(): + # regenreate item + if extra_line.context: + context_string = getattr(extra_line.context, 'migration') + if not context_string: + continue + [item.save() for item in serializers.deserialize('json', context_string)] + extra_line.delete() + print(f'Done converting line items - now at {OrderExtraLine.objects.all().count()} {extra_line_ref} / {OrderLineItem.objects.all().count()} {line_item_ref} instance(s)') + + +def convert_line_items(apps, schema_editor): + """convert line items""" + _convert_model(apps, 'PurchaseOrderLineItem', 'PurchaseOrderExtraLine', 'purchase_price') + _convert_model(apps, 'SalesOrderLineItem', 'SalesOrderExtraLine', 'sale_price') + + +def nunconvert_line_items(apps, schema_editor): # pragma: no cover + """reconvert line items""" + _reconvert_model(apps, 'PurchaseOrderLineItem', 'PurchaseOrderExtraLine') + _reconvert_model(apps, 'SalesOrderLineItem', 'SalesOrderExtraLine') + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0063_alter_purchaseorderlineitem_unique_together'), + ] + + operations = [ + migrations.CreateModel( + name='SalesOrderExtraLine', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', InvenTree.fields.RoundingDecimalField(decimal_places=5, default=1, help_text='Item quantity', max_digits=15, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Quantity')), + ('reference', models.CharField(blank=True, help_text='Line item reference', max_length=100, verbose_name='Reference')), + ('notes', models.CharField(blank=True, help_text='Line item notes', max_length=500, verbose_name='Notes')), + ('target_date', models.DateField(blank=True, help_text='Target shipping date for this line item', null=True, verbose_name='Target Date')), + ('context', models.JSONField(blank=True, help_text='Additional context for this line', null=True, verbose_name='Context')), + ('price_currency', djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3)), + ('price', InvenTree.fields.InvenTreeModelMoneyField(blank=True, currency_choices=[], decimal_places=4, default_currency='', help_text='Unit price', max_digits=19, null=True, validators=[djmoney.models.validators.MinMoneyValidator(0)], verbose_name='Price')), + ('order', models.ForeignKey(help_text='Sales Order', on_delete=django.db.models.deletion.CASCADE, related_name='extra_lines', to='order.salesorder', verbose_name='Order')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='PurchaseOrderExtraLine', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', InvenTree.fields.RoundingDecimalField(decimal_places=5, default=1, help_text='Item quantity', max_digits=15, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Quantity')), + ('reference', models.CharField(blank=True, help_text='Line item reference', max_length=100, verbose_name='Reference')), + ('notes', models.CharField(blank=True, help_text='Line item notes', max_length=500, verbose_name='Notes')), + ('target_date', models.DateField(blank=True, help_text='Target shipping date for this line item', null=True, verbose_name='Target Date')), + ('context', models.JSONField(blank=True, help_text='Additional context for this line', null=True, verbose_name='Context')), + ('price_currency', djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3)), + ('price', InvenTree.fields.InvenTreeModelMoneyField(blank=True, currency_choices=[], decimal_places=4, default_currency='', help_text='Unit price', max_digits=19, null=True, validators=[djmoney.models.validators.MinMoneyValidator(0)], verbose_name='Price')), + ('order', models.ForeignKey(help_text='Purchase Order', on_delete=django.db.models.deletion.CASCADE, related_name='extra_lines', to='order.purchaseorder', verbose_name='Order')), + ], + options={ + 'abstract': False, + }, + ), + migrations.RunPython(convert_line_items, reverse_code=nunconvert_line_items), + ] diff --git a/InvenTree/order/migrations/0065_alter_purchaseorderlineitem_part.py b/InvenTree/order/migrations/0065_alter_purchaseorderlineitem_part.py new file mode 100644 index 0000000000..033b333f27 --- /dev/null +++ b/InvenTree/order/migrations/0065_alter_purchaseorderlineitem_part.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2022-03-28 22:02 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0042_supplierpricebreak_updated'), + ('order', '0064_purchaseorderextraline_salesorderextraline'), + ] + + operations = [ + migrations.AlterField( + model_name='purchaseorderlineitem', + name='part', + field=models.ForeignKey(help_text='Supplier part', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchase_order_line_items', to='company.supplierpart', verbose_name='Part'), + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index f08880a882..2b722ddecd 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -5,6 +5,7 @@ Order model definitions # -*- coding: utf-8 -*- import os + from datetime import datetime from decimal import Decimal @@ -16,11 +17,15 @@ from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError from django.contrib.auth.models import User from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from markdownx.models import MarkdownxField from mptt.models import TreeForeignKey +from djmoney.contrib.exchange.models import convert_money +from djmoney.money import Money +from common.settings import currency_code_default + from users import models as UserModels from part import models as PartModels from stock import models as stock_models @@ -44,7 +49,7 @@ def get_next_po_number(): order = PurchaseOrder.objects.exclude(reference=None).last() - attempts = set([order.reference]) + attempts = {order.reference} reference = order.reference @@ -73,7 +78,7 @@ def get_next_so_number(): order = SalesOrder.objects.exclude(reference=None).last() - attempts = set([order.reference]) + attempts = {order.reference} reference = order.reference @@ -146,6 +151,25 @@ class Order(ReferenceIndexingMixin): notes = MarkdownxField(blank=True, verbose_name=_('Notes'), help_text=_('Order notes')) + def get_total_price(self): + """ + Calculates the total price of all order lines + """ + target_currency = currency_code_default() + total = Money(0, target_currency) + + # gather name reference + price_ref = 'sale_price' if isinstance(self, SalesOrder) else 'purchase_price' + # order items + total += sum(a.quantity * convert_money(getattr(a, price_ref), target_currency) for a in self.lines.all() if getattr(a, price_ref)) + + # extra lines + total += sum(a.quantity * convert_money(a.price, target_currency) for a in self.extra_lines.all() if a.price) + + # set decimal-places + total.decimal_places = 4 + return total + class PurchaseOrder(Order): """ A PurchaseOrder represents goods shipped inwards from an external supplier. @@ -285,7 +309,7 @@ class PurchaseOrder(Order): raise ValidationError({'supplier': _("Part supplier must match PO supplier")}) if group: - # Check if there is already a matching line item (for this PO) + # Check if there is already a matching line item (for this PurchaseOrder) matches = self.lines.filter(part=supplier_part) if matches.count() > 0: @@ -400,7 +424,7 @@ class PurchaseOrder(Order): @transaction.atomic def receive_line_item(self, line, location, quantity, user, status=StockStatus.OK, **kwargs): """ - Receive a line item (or partial line item) against this PO + Receive a line item (or partial line item) against this PurchaseOrder """ # Extract optional batch code for the new stock item @@ -851,12 +875,44 @@ class OrderLineItem(models.Model): ) +class OrderExtraLine(OrderLineItem): + """ + Abstract Model for a single ExtraLine in a Order + Attributes: + price: The unit sale price for this OrderLineItem + """ + + class Meta: + abstract = True + unique_together = [ + ] + + context = models.JSONField( + blank=True, null=True, + verbose_name=_('Context'), + help_text=_('Additional context for this line'), + ) + + price = InvenTreeModelMoneyField( + max_digits=19, + decimal_places=4, + null=True, blank=True, + verbose_name=_('Price'), + help_text=_('Unit price'), + ) + + def price_converted(self): + return convert_money(self.price, currency_code_default()) + + def price_converted_currency(self): + return currency_code_default() + + class PurchaseOrderLineItem(OrderLineItem): """ Model for a purchase order line item. Attributes: order: Reference to a PurchaseOrder object - """ class Meta: @@ -903,11 +959,9 @@ class PurchaseOrderLineItem(OrderLineItem): else: return self.part.part - # TODO - Function callback for when the SupplierPart is deleted? - part = models.ForeignKey( SupplierPart, on_delete=models.SET_NULL, - blank=True, null=True, + blank=False, null=True, related_name='purchase_order_line_items', verbose_name=_('Part'), help_text=_("Supplier part"), @@ -960,6 +1014,21 @@ class PurchaseOrderLineItem(OrderLineItem): return max(r, 0) +class PurchaseOrderExtraLine(OrderExtraLine): + """ + Model for a single ExtraLine in a PurchaseOrder + Attributes: + order: Link to the PurchaseOrder that this line belongs to + title: title of line + price: The unit price for this OrderLine + """ + @staticmethod + def get_api_url(): + return reverse('api-po-extra-line-list') + + order = models.ForeignKey(PurchaseOrder, on_delete=models.CASCADE, related_name='extra_lines', verbose_name=_('Order'), help_text=_('Purchase Order')) + + class SalesOrderLineItem(OrderLineItem): """ Model for a single LineItem in a SalesOrder @@ -1163,6 +1232,21 @@ class SalesOrderShipment(models.Model): trigger_event('salesordershipment.completed', id=self.pk) +class SalesOrderExtraLine(OrderExtraLine): + """ + Model for a single ExtraLine in a SalesOrder + Attributes: + order: Link to the SalesOrder that this line belongs to + title: title of line + price: The unit price for this OrderLine + """ + @staticmethod + def get_api_url(): + return reverse('api-so-extra-line-list') + + order = models.ForeignKey(SalesOrder, on_delete=models.CASCADE, related_name='extra_lines', verbose_name=_('Order'), help_text=_('Sales Order')) + + class SalesOrderAllocation(models.Model): """ This model is used to 'allocate' stock items to a SalesOrder. diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 56e21b1b2b..cc07dd3fea 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from decimal import Decimal -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models, transaction @@ -40,7 +40,64 @@ import stock.serializers from users.serializers import OwnerSerializer -class POSerializer(ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): +class AbstractOrderSerializer(serializers.Serializer): + """ + Abstract field definitions for OrderSerializers + """ + total_price = InvenTreeMoneySerializer( + source='get_total_price', + allow_null=True, + read_only=True, + ) + + total_price_string = serializers.CharField(source='get_total_price', read_only=True) + + +class AbstractExtraLineSerializer(serializers.Serializer): + """ Abstract Serializer for a ExtraLine object """ + def __init__(self, *args, **kwargs): + + order_detail = kwargs.pop('order_detail', False) + + super().__init__(*args, **kwargs) + + if order_detail is not True: + self.fields.pop('order_detail') + + quantity = serializers.FloatField() + + price = InvenTreeMoneySerializer( + allow_null=True + ) + + price_string = serializers.CharField(source='price', read_only=True) + + price_currency = serializers.ChoiceField( + choices=currency_code_mappings(), + help_text=_('Price currency'), + ) + + +class AbstractExtraLineMeta: + """ + Abstract Meta for ExtraLine + """ + + fields = [ + 'pk', + 'quantity', + 'reference', + 'notes', + 'context', + 'order', + 'order_detail', + 'price', + 'price_currency', + 'price_string', + ] + + +class PurchaseOrderSerializer(AbstractOrderSerializer, ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): """ Serializer for a PurchaseOrder object """ def __init__(self, *args, **kwargs): @@ -110,6 +167,8 @@ class POSerializer(ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): 'status_text', 'target_date', 'notes', + 'total_price', + 'total_price_string', ] read_only_fields = [ @@ -120,7 +179,7 @@ class POSerializer(ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): ] -class POLineItemSerializer(InvenTreeModelSerializer): +class PurchaseOrderLineItemSerializer(InvenTreeModelSerializer): @staticmethod def annotate_queryset(queryset): @@ -202,7 +261,7 @@ class POLineItemSerializer(InvenTreeModelSerializer): help_text=_('Purchase price currency'), ) - order_detail = POSerializer(source='order', read_only=True, many=False) + order_detail = PurchaseOrderSerializer(source='order', read_only=True, many=False) def validate(self, data): @@ -245,7 +304,16 @@ class POLineItemSerializer(InvenTreeModelSerializer): ] -class POLineItemReceiveSerializer(serializers.Serializer): +class PurchaseOrderExtraLineSerializer(AbstractExtraLineSerializer, InvenTreeModelSerializer): + """ Serializer for a PurchaseOrderExtraLine object """ + + order_detail = PurchaseOrderSerializer(source='order', many=False, read_only=True) + + class Meta(AbstractExtraLineMeta): + model = order.models.PurchaseOrderExtraLine + + +class PurchaseOrderLineItemReceiveSerializer(serializers.Serializer): """ A serializer for receiving a single purchase order line item against a purchase order """ @@ -375,12 +443,12 @@ class POLineItemReceiveSerializer(serializers.Serializer): return data -class POReceiveSerializer(serializers.Serializer): +class PurchaseOrderReceiveSerializer(serializers.Serializer): """ Serializer for receiving items against a purchase order """ - items = POLineItemReceiveSerializer(many=True, required=True) + items = PurchaseOrderLineItemReceiveSerializer(many=True) location = serializers.PrimaryKeyRelatedField( queryset=stock.models.StockLocation.objects.all(), @@ -475,7 +543,7 @@ class POReceiveSerializer(serializers.Serializer): ] -class POAttachmentSerializer(InvenTreeAttachmentSerializer): +class PurchaseOrderAttachmentSerializer(InvenTreeAttachmentSerializer): """ Serializers for the PurchaseOrderAttachment model """ @@ -498,7 +566,7 @@ class POAttachmentSerializer(InvenTreeAttachmentSerializer): ] -class SalesOrderSerializer(ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): +class SalesOrderSerializer(AbstractOrderSerializer, ReferenceIndexingSerializerMixin, InvenTreeModelSerializer): """ Serializers for the SalesOrder object """ @@ -566,6 +634,8 @@ class SalesOrderSerializer(ReferenceIndexingSerializerMixin, InvenTreeModelSeria 'status_text', 'shipment_date', 'target_date', + 'total_price', + 'total_price_string', ] read_only_fields = [ @@ -643,7 +713,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): ] -class SOLineItemSerializer(InvenTreeModelSerializer): +class SalesOrderLineItemSerializer(InvenTreeModelSerializer): """ Serializer for a SalesOrderLineItem object """ @staticmethod @@ -893,7 +963,7 @@ class SalesOrderCompleteSerializer(serializers.Serializer): order.complete_order(user) -class SOSerialAllocationSerializer(serializers.Serializer): +class SalesOrderSerialAllocationSerializer(serializers.Serializer): """ DRF serializer for allocation of serial numbers against a sales order / shipment """ @@ -1056,7 +1126,7 @@ class SOSerialAllocationSerializer(serializers.Serializer): ) -class SOShipmentAllocationSerializer(serializers.Serializer): +class SalesOrderShipmentAllocationSerializer(serializers.Serializer): """ DRF serializer for allocation of stock items against a sales order / shipment """ @@ -1130,7 +1200,16 @@ class SOShipmentAllocationSerializer(serializers.Serializer): ) -class SOAttachmentSerializer(InvenTreeAttachmentSerializer): +class SalesOrderExtraLineSerializer(AbstractExtraLineSerializer, InvenTreeModelSerializer): + """ Serializer for a SalesOrderExtraLine object """ + + order_detail = SalesOrderSerializer(source='order', many=False, read_only=True) + + class Meta(AbstractExtraLineMeta): + model = order.models.SalesOrderExtraLine + + +class SalesOrderAttachmentSerializer(InvenTreeAttachmentSerializer): """ Serializers for the SalesOrderAttachment model """ diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index e30fc838e4..c2aa10f722 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -171,6 +171,12 @@ src="{% static 'img/blank_image.png' %}" {{ order.responsible }} {% endif %} + + + + {% trans "Total cost" %} + {{ order.get_total_price }} + {% endblock %} diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index a6393b7b68..23bdd908e1 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -42,6 +42,29 @@
+ +
+
+

{% trans "Extra Lines" %}

+ {% include "spacer.html" %} +
+ {% if roles.purchase_order.change and order.status == PurchaseOrderStatus.PENDING %} + + {% endif %} +
+
+
+
+
+
+ {% include "filter_list.html" with id="purchase-order-extra-lines" %} +
+
+ +
+
@@ -200,6 +223,37 @@ loadPurchaseOrderLineItemTable('#po-line-table', { {% endif %} }); +$("#new-po-extra-line").click(function() { + + var fields = extraLineFields({ + order: {{ order.pk }}, + }); + + constructForm('{% url "api-po-extra-line-list" %}', { + fields: fields, + method: 'POST', + title: '{% trans "Add Order Line" %}', + onSuccess: function() { + $("#po-extra-lines-table").bootstrapTable("refresh"); + }, + }); +}); + +loadPurchaseOrderExtraLineTable( + '#po-extra-lines-table', + { + order: {{ order.pk }}, + status: {{ order.status }}, + } +); + +loadOrderTotal( + '#poTotalPrice', + { + url: '{% url "api-po-detail" order.pk %}', + } +); + enableSidebar('purchaseorder'); {% endblock %} \ No newline at end of file diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 423090f917..9abd058996 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -183,6 +183,12 @@ src="{% static 'img/blank_image.png' %}" {{ order.responsible }} {% endif %} + + + + {% trans "Total cost" %} + {{ order.get_total_price }} + {% endblock %} diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index f11d1fa832..628e510d37 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -34,6 +34,29 @@
+ +
+
+

{% trans "Extra Lines" %}

+ {% include "spacer.html" %} +
+ {% if roles.sales_order.change and order.is_pending %} + + {% endif %} +
+
+
+
+
+
+ {% include "filter_list.html" with id="sales-order-extra-lines" %} +
+
+ +
+
{% if order.is_pending %} @@ -238,6 +261,37 @@ } ); + $("#new-so-extra-line").click(function() { + + var fields = extraLineFields({ + order: {{ order.pk }}, + }); + + constructForm('{% url "api-so-extra-line-list" %}', { + fields: fields, + method: 'POST', + title: '{% trans "Add Extra Line" %}', + onSuccess: function() { + $("#so-extra-lines-table").bootstrapTable("refresh"); + }, + }); + }); + + loadSalesOrderExtraLineTable( + '#so-extra-lines-table', + { + order: {{ order.pk }}, + status: {{ order.status }}, + } + ); + + loadOrderTotal( + '#soTotalPrice', + { + url: '{% url "api-so-detail" order.pk %}', + } + ); + enableSidebar('salesorder'); {% endblock %} \ No newline at end of file diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index 8d5d91f0fb..d3e405e5fa 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -63,7 +63,7 @@ class PurchaseOrderTest(OrderTest): def test_po_list(self): - # List *ALL* PO items + # List *ALL* PurchaseOrder items self.filter({}, 7) # Filter by supplier @@ -175,7 +175,7 @@ class PurchaseOrderTest(OrderTest): pk = response.data['pk'] - # Try to create a PO with identical reference (should fail!) + # Try to create a PurchaseOrder with identical reference (should fail!) response = self.post( url, { @@ -493,7 +493,7 @@ class PurchaseOrderReceiveTest(OrderTest): self.assertIn('can only be received against', str(response.data)) - # Now, set the PO back to "PLACED" so the items can be received + # Now, set the PurchaseOrder back to "PLACED" so the items can be received order.status = PurchaseOrderStatus.PLACED order.save() diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index 3afba65223..61299a8e2f 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -122,3 +122,97 @@ class TestShipmentMigration(MigratorTestCase): # Check that the correct number of Shipments have been created self.assertEqual(SalesOrder.objects.count(), 5) self.assertEqual(Shipment.objects.count(), 5) + + +class TestAdditionalLineMigration(MigratorTestCase): + """ + Test entire schema migration + """ + + migrate_from = ('order', '0063_alter_purchaseorderlineitem_unique_together') + migrate_to = ('order', '0064_purchaseorderextraline_salesorderextraline') + + def prepare(self): + """ + Create initial data set + """ + + # Create a purchase order from a supplier + Company = self.old_state.apps.get_model('company', 'company') + PurchaseOrder = self.old_state.apps.get_model('order', 'purchaseorder') + Part = self.old_state.apps.get_model('part', 'part') + Supplierpart = self.old_state.apps.get_model('company', 'supplierpart') + # TODO @matmair fix this test!!! + # SalesOrder = self.old_state.apps.get_model('order', 'salesorder') + + supplier = Company.objects.create( + name='Supplier A', + description='A great supplier!', + is_supplier=True, + is_customer=True, + ) + + part = Part.objects.create( + name='Bob', + description='Can we build it?', + assembly=True, + salable=True, + purchaseable=False, + tree_id=0, + level=0, + lft=0, + rght=0, + ) + supplierpart = Supplierpart.objects.create( + part=part, + supplier=supplier + ) + + # Create some orders + for ii in range(10): + + order = PurchaseOrder.objects.create( + supplier=supplier, + reference=f"{ii}-abcde", + description="Just a test order" + ) + order.lines.create( + part=supplierpart, + quantity=12, + received=1 + ) + order.lines.create( + quantity=12, + received=1 + ) + + # TODO @matmair fix this test!!! + # sales_order = SalesOrder.objects.create( + # customer=supplier, + # reference=f"{ii}-xyz", + # description="A test sales order", + # ) + # sales_order.lines.create( + # part=part, + # quantity=12, + # received=1 + # ) + + def test_po_migration(self): + """ + Test that the the PO lines where converted correctly + """ + + PurchaseOrder = self.new_state.apps.get_model('order', 'purchaseorder') + for ii in range(10): + + po = PurchaseOrder.objects.get(reference=f"{ii}-abcde") + self.assertEqual(po.extra_lines.count(), 1) + self.assertEqual(po.lines.count(), 1) + + # TODO @matmair fix this test!!! + # SalesOrder = self.new_state.apps.get_model('order', 'salesorder') + # for ii in range(10): + # so = SalesOrder.objects.get(reference=f"{ii}-xyz") + # self.assertEqual(so.extra_lines, 1) + # self.assertEqual(so.lines.count(), 1) diff --git a/InvenTree/order/urls.py b/InvenTree/order/urls.py index 504145892a..54be93905f 100644 --- a/InvenTree/order/urls.py +++ b/InvenTree/order/urls.py @@ -5,50 +5,50 @@ URL lookup for the Order app. Provides URL endpoints for: - Detail view of Purchase Orders """ -from django.conf.urls import url, include +from django.urls import include, re_path from . import views purchase_order_detail_urls = [ - url(r'^cancel/', views.PurchaseOrderCancel.as_view(), name='po-cancel'), - url(r'^issue/', views.PurchaseOrderIssue.as_view(), name='po-issue'), - url(r'^complete/', views.PurchaseOrderComplete.as_view(), name='po-complete'), + re_path(r'^cancel/', views.PurchaseOrderCancel.as_view(), name='po-cancel'), + re_path(r'^issue/', views.PurchaseOrderIssue.as_view(), name='po-issue'), + re_path(r'^complete/', views.PurchaseOrderComplete.as_view(), name='po-complete'), - url(r'^upload/', views.PurchaseOrderUpload.as_view(), name='po-upload'), - url(r'^export/', views.PurchaseOrderExport.as_view(), name='po-export'), + re_path(r'^upload/', views.PurchaseOrderUpload.as_view(), name='po-upload'), + re_path(r'^export/', views.PurchaseOrderExport.as_view(), name='po-export'), - url(r'^.*$', views.PurchaseOrderDetail.as_view(), name='po-detail'), + re_path(r'^.*$', views.PurchaseOrderDetail.as_view(), name='po-detail'), ] purchase_order_urls = [ - url(r'^order-parts/', views.OrderParts.as_view(), name='order-parts'), - url(r'^pricing/', views.LineItemPricing.as_view(), name='line-pricing'), + re_path(r'^order-parts/', views.OrderParts.as_view(), name='order-parts'), + re_path(r'^pricing/', views.LineItemPricing.as_view(), name='line-pricing'), # Display detail view for a single purchase order - url(r'^(?P\d+)/', include(purchase_order_detail_urls)), + re_path(r'^(?P\d+)/', include(purchase_order_detail_urls)), # Display complete list of purchase orders - url(r'^.*$', views.PurchaseOrderIndex.as_view(), name='po-index'), + re_path(r'^.*$', views.PurchaseOrderIndex.as_view(), name='po-index'), ] sales_order_detail_urls = [ - url(r'^cancel/', views.SalesOrderCancel.as_view(), name='so-cancel'), - url(r'^export/', views.SalesOrderExport.as_view(), name='so-export'), + re_path(r'^cancel/', views.SalesOrderCancel.as_view(), name='so-cancel'), + re_path(r'^export/', views.SalesOrderExport.as_view(), name='so-export'), - url(r'^.*$', views.SalesOrderDetail.as_view(), name='so-detail'), + re_path(r'^.*$', views.SalesOrderDetail.as_view(), name='so-detail'), ] sales_order_urls = [ # Display detail view for a single SalesOrder - url(r'^(?P\d+)/', include(sales_order_detail_urls)), + re_path(r'^(?P\d+)/', include(sales_order_detail_urls)), # Display list of all sales orders - url(r'^.*$', views.SalesOrderIndex.as_view(), name='so-index'), + re_path(r'^.*$', views.SalesOrderIndex.as_view(), name='so-index'), ] order_urls = [ - url(r'^purchase-order/', include(purchase_order_urls)), - url(r'^sales-order/', include(sales_order_urls)), + re_path(r'^purchase-order/', include(purchase_order_urls)), + re_path(r'^sales-order/', include(sales_order_urls)), ] diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index c89d2a77b1..35f8b973f4 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -11,7 +11,7 @@ from django.http.response import JsonResponse from django.shortcuts import get_object_or_404 from django.urls import reverse from django.http import HttpResponseRedirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import DetailView, ListView from django.forms import HiddenInput, IntegerField @@ -20,7 +20,7 @@ from decimal import Decimal, InvalidOperation from .models import PurchaseOrder, PurchaseOrderLineItem from .models import SalesOrder, SalesOrderLineItem -from .admin import POLineItemResource, SOLineItemResource +from .admin import PurchaseOrderLineItemResource, SalesOrderLineItemResource from build.models import Build from company.models import Company, SupplierPart # ManufacturerPart from stock.models import StockItem @@ -410,7 +410,7 @@ class SalesOrderExport(AjaxView): filename = f"{str(order)} - {order.customer.name}.{export_format}" - dataset = SOLineItemResource().export(queryset=order.lines.all()) + dataset = SalesOrderLineItemResource().export(queryset=order.lines.all()) filedata = dataset.export(format=export_format) @@ -441,7 +441,7 @@ class PurchaseOrderExport(AjaxView): fmt=export_format ) - dataset = POLineItemResource().export(queryset=order.lines.all()) + dataset = PurchaseOrderLineItemResource().export(queryset=order.lines.all()) filedata = dataset.export(format=export_format) @@ -491,7 +491,7 @@ class OrderParts(AjaxView): return data def get_suppliers(self): - """ Calculates a list of suppliers which the user will need to create POs for. + """ Calculates a list of suppliers which the user will need to create PurchaseOrders for. This is calculated AFTER the user finishes selecting the parts to order. Crucially, get_parts() must be called before get_suppliers() """ diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 1a80c87322..ca9accf9e2 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -7,11 +7,11 @@ from __future__ import unicode_literals import datetime -from django.conf.urls import url, include +from django.urls import include, path, re_path from django.http import JsonResponse from django.db.models import Q, F, Count, Min, Max, Avg from django.db import transaction -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status from rest_framework.response import Response @@ -383,7 +383,7 @@ class PartTestTemplateList(generics.ListCreateAPIView): required = params.get('required', None) if required is not None: - queryset = queryset.filter(required=required) + queryset = queryset.filter(required=str2bool(required)) return queryset @@ -1916,100 +1916,100 @@ class BomItemSubstituteDetail(generics.RetrieveUpdateDestroyAPIView): part_api_urls = [ # Base URL for PartCategory API endpoints - url(r'^category/', include([ - url(r'^tree/', CategoryTree.as_view(), name='api-part-category-tree'), - url(r'^parameters/', CategoryParameterList.as_view(), name='api-part-category-parameter-list'), + re_path(r'^category/', include([ + re_path(r'^tree/', CategoryTree.as_view(), name='api-part-category-tree'), + re_path(r'^parameters/', CategoryParameterList.as_view(), name='api-part-category-parameter-list'), - url(r'^(?P\d+)/?', CategoryDetail.as_view(), name='api-part-category-detail'), - url(r'^$', CategoryList.as_view(), name='api-part-category-list'), + re_path(r'^(?P\d+)/?', CategoryDetail.as_view(), name='api-part-category-detail'), + path('', CategoryList.as_view(), name='api-part-category-list'), ])), # Base URL for PartTestTemplate API endpoints - url(r'^test-template/', include([ - url(r'^(?P\d+)/', PartTestTemplateDetail.as_view(), name='api-part-test-template-detail'), - url(r'^$', PartTestTemplateList.as_view(), name='api-part-test-template-list'), + re_path(r'^test-template/', include([ + re_path(r'^(?P\d+)/', PartTestTemplateDetail.as_view(), name='api-part-test-template-detail'), + path('', PartTestTemplateList.as_view(), name='api-part-test-template-list'), ])), # Base URL for PartAttachment API endpoints - url(r'^attachment/', include([ - url(r'^(?P\d+)/', PartAttachmentDetail.as_view(), name='api-part-attachment-detail'), - url(r'^$', PartAttachmentList.as_view(), name='api-part-attachment-list'), + re_path(r'^attachment/', include([ + re_path(r'^(?P\d+)/', PartAttachmentDetail.as_view(), name='api-part-attachment-detail'), + path('', PartAttachmentList.as_view(), name='api-part-attachment-list'), ])), # Base URL for part sale pricing - url(r'^sale-price/', include([ - url(r'^(?P\d+)/', PartSalePriceDetail.as_view(), name='api-part-sale-price-detail'), - url(r'^.*$', PartSalePriceList.as_view(), name='api-part-sale-price-list'), + re_path(r'^sale-price/', include([ + re_path(r'^(?P\d+)/', PartSalePriceDetail.as_view(), name='api-part-sale-price-detail'), + re_path(r'^.*$', PartSalePriceList.as_view(), name='api-part-sale-price-list'), ])), # Base URL for part internal pricing - url(r'^internal-price/', include([ - url(r'^(?P\d+)/', PartInternalPriceDetail.as_view(), name='api-part-internal-price-detail'), - url(r'^.*$', PartInternalPriceList.as_view(), name='api-part-internal-price-list'), + re_path(r'^internal-price/', include([ + re_path(r'^(?P\d+)/', PartInternalPriceDetail.as_view(), name='api-part-internal-price-detail'), + re_path(r'^.*$', PartInternalPriceList.as_view(), name='api-part-internal-price-list'), ])), # Base URL for PartRelated API endpoints - url(r'^related/', include([ - url(r'^(?P\d+)/', PartRelatedDetail.as_view(), name='api-part-related-detail'), - url(r'^.*$', PartRelatedList.as_view(), name='api-part-related-list'), + re_path(r'^related/', include([ + re_path(r'^(?P\d+)/', PartRelatedDetail.as_view(), name='api-part-related-detail'), + re_path(r'^.*$', PartRelatedList.as_view(), name='api-part-related-list'), ])), # Base URL for PartParameter API endpoints - url(r'^parameter/', include([ - url(r'^template/$', PartParameterTemplateList.as_view(), name='api-part-parameter-template-list'), + re_path(r'^parameter/', include([ + path('template/', PartParameterTemplateList.as_view(), name='api-part-parameter-template-list'), - url(r'^(?P\d+)/', PartParameterDetail.as_view(), name='api-part-parameter-detail'), - url(r'^.*$', PartParameterList.as_view(), name='api-part-parameter-list'), + re_path(r'^(?P\d+)/', PartParameterDetail.as_view(), name='api-part-parameter-detail'), + re_path(r'^.*$', PartParameterList.as_view(), name='api-part-parameter-list'), ])), - url(r'^thumbs/', include([ - url(r'^$', PartThumbs.as_view(), name='api-part-thumbs'), - url(r'^(?P\d+)/?', PartThumbsUpdate.as_view(), name='api-part-thumbs-update'), + re_path(r'^thumbs/', include([ + path('', PartThumbs.as_view(), name='api-part-thumbs'), + re_path(r'^(?P\d+)/?', PartThumbsUpdate.as_view(), name='api-part-thumbs-update'), ])), - url(r'^(?P\d+)/', include([ + re_path(r'^(?P\d+)/', include([ # Endpoint for extra serial number information - url(r'^serial-numbers/', PartSerialNumberDetail.as_view(), name='api-part-serial-number-detail'), + re_path(r'^serial-numbers/', PartSerialNumberDetail.as_view(), name='api-part-serial-number-detail'), # Endpoint for future scheduling information - url(r'^scheduling/', PartScheduling.as_view(), name='api-part-scheduling'), + re_path(r'^scheduling/', PartScheduling.as_view(), name='api-part-scheduling'), # Endpoint for duplicating a BOM for the specific Part - url(r'^bom-copy/', PartCopyBOM.as_view(), name='api-part-bom-copy'), + re_path(r'^bom-copy/', PartCopyBOM.as_view(), name='api-part-bom-copy'), # Endpoint for validating a BOM for the specific Part - url(r'^bom-validate/', PartValidateBOM.as_view(), name='api-part-bom-validate'), + re_path(r'^bom-validate/', PartValidateBOM.as_view(), name='api-part-bom-validate'), # Part detail endpoint - url(r'^.*$', PartDetail.as_view(), name='api-part-detail'), + re_path(r'^.*$', PartDetail.as_view(), name='api-part-detail'), ])), - url(r'^.*$', PartList.as_view(), name='api-part-list'), + re_path(r'^.*$', PartList.as_view(), name='api-part-list'), ] bom_api_urls = [ - url(r'^substitute/', include([ + re_path(r'^substitute/', include([ # Detail view - url(r'^(?P\d+)/', BomItemSubstituteDetail.as_view(), name='api-bom-substitute-detail'), + re_path(r'^(?P\d+)/', BomItemSubstituteDetail.as_view(), name='api-bom-substitute-detail'), # Catch all - url(r'^.*$', BomItemSubstituteList.as_view(), name='api-bom-substitute-list'), + re_path(r'^.*$', BomItemSubstituteList.as_view(), name='api-bom-substitute-list'), ])), # BOM Item Detail - url(r'^(?P\d+)/', include([ - url(r'^validate/?', BomItemValidate.as_view(), name='api-bom-item-validate'), - url(r'^.*$', BomDetail.as_view(), name='api-bom-item-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^validate/?', BomItemValidate.as_view(), name='api-bom-item-validate'), + re_path(r'^.*$', BomDetail.as_view(), name='api-bom-item-detail'), ])), # API endpoint URLs for importing BOM data - url(r'^import/upload/', BomImportUpload.as_view(), name='api-bom-import-upload'), - url(r'^import/extract/', BomImportExtract.as_view(), name='api-bom-import-extract'), - url(r'^import/submit/', BomImportSubmit.as_view(), name='api-bom-import-submit'), + re_path(r'^import/upload/', BomImportUpload.as_view(), name='api-bom-import-upload'), + re_path(r'^import/extract/', BomImportExtract.as_view(), name='api-bom-import-extract'), + re_path(r'^import/submit/', BomImportSubmit.as_view(), name='api-bom-import-submit'), # Catch-all - url(r'^.*$', BomList.as_view(), name='api-bom-list'), + re_path(r'^.*$', BomList.as_view(), name='api-bom-list'), ] diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py index 8925c6d9bd..2ba60d111b 100644 --- a/InvenTree/part/forms.py +++ b/InvenTree/part/forms.py @@ -6,7 +6,7 @@ Django Forms for interacting with Part objects from __future__ import unicode_literals from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from mptt.fields import TreeNodeChoiceField diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 1edae69351..46b2154c43 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -2510,7 +2510,7 @@ def validate_template_name(name): Prevent illegal characters in "name" field for PartParameterTemplate """ - for c in "!@#$%^&*()<>{}[].,?/\|~`_+-=\'\"": + for c in "!@#$%^&*()<>{}[].,?/\\|~`_+-=\'\"": if c in str(name): raise ValidationError(_(f"Illegal character in template name ({c})")) @@ -2740,8 +2740,8 @@ class BomItem(models.Model, DataImportMixin): if not p.active: continue - # Trackable parts cannot be 'auto allocated' - if p.trackable: + # Trackable status must be the same as the sub_part + if p.trackable != self.sub_part.trackable: continue valid_parts.append(p) diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 0e865ea74b..098c1d1aea 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -11,7 +11,7 @@ from django.db.models import ExpressionWrapper, F, Q, Func from django.db.models import Subquery, OuterRef, FloatField from django.db.models.functions import Coalesce -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from sql_util.utils import SubqueryCount, SubquerySum diff --git a/InvenTree/part/tasks.py b/InvenTree/part/tasks.py index b5e02e1128..b158d26ad3 100644 --- a/InvenTree/part/tasks.py +++ b/InvenTree/part/tasks.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import logging -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import InvenTree.helpers import InvenTree.tasks diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py index 08fa8ce583..3eba8368af 100644 --- a/InvenTree/part/templatetags/inventree_extras.py +++ b/InvenTree/part/templatetags/inventree_extras.py @@ -12,13 +12,14 @@ import logging from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings as djangosettings from django import template from django.urls import reverse from django.utils.safestring import mark_safe -from django.templatetags.static import StaticNode +from django.templatetags.static import StaticNode, static +from django.core.files.storage import default_storage from InvenTree import version, settings @@ -160,10 +161,11 @@ def inventree_in_debug_mode(*args, **kwargs): @register.simple_tag() -def inventree_demo_mode(*args, **kwargs): - """ Return True if the server is running in DEMO mode """ - - return djangosettings.DEMO_MODE +def inventree_show_about(user, *args, **kwargs): + """ Return True if the about modal should be shown """ + if InvenTreeSetting.get_setting('INVENTREE_RESTRICT_ABOUT') and not user.is_superuser: + return False + return True @register.simple_tag() @@ -220,8 +222,13 @@ def python_version(*args, **kwargs): @register.simple_tag() -def inventree_version(*args, **kwargs): +def inventree_version(shortstring=False, *args, **kwargs): """ Return InvenTree version string """ + if shortstring: + return _("{title} v{version}".format( + title=version.inventreeInstanceTitle(), + version=version.inventreeVersion() + )) return version.inventreeVersion() @@ -512,6 +519,22 @@ def mail_configured(): return bool(settings.EMAIL_HOST) +@register.simple_tag() +def inventree_customize(reference, *args, **kwargs): + """ Return customization values for the user interface """ + + return djangosettings.CUSTOMIZE.get(reference, '') + + +@register.simple_tag() +def inventree_logo(*args, **kwargs): + """ Return the path to the logo-file """ + + if settings.CUSTOM_LOGO: + return default_storage.url(settings.CUSTOM_LOGO) + return static('img/inventree.png') + + class I18nStaticNode(StaticNode): """ custom StaticNode diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index 04d2b0a5f8..a9da7329a6 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -8,53 +8,53 @@ URL lookup for Part app. Provides URL endpoints for: """ -from django.conf.urls import url, include +from django.urls import include, re_path from . import views part_parameter_urls = [ - url(r'^template/new/', views.PartParameterTemplateCreate.as_view(), name='part-param-template-create'), - url(r'^template/(?P\d+)/edit/', views.PartParameterTemplateEdit.as_view(), name='part-param-template-edit'), - url(r'^template/(?P\d+)/delete/', views.PartParameterTemplateDelete.as_view(), name='part-param-template-edit'), + re_path(r'^template/new/', views.PartParameterTemplateCreate.as_view(), name='part-param-template-create'), + re_path(r'^template/(?P\d+)/edit/', views.PartParameterTemplateEdit.as_view(), name='part-param-template-edit'), + re_path(r'^template/(?P\d+)/delete/', views.PartParameterTemplateDelete.as_view(), name='part-param-template-edit'), ] part_detail_urls = [ - url(r'^delete/?', views.PartDelete.as_view(), name='part-delete'), - url(r'^bom-download/?', views.BomDownload.as_view(), name='bom-download'), + re_path(r'^delete/?', views.PartDelete.as_view(), name='part-delete'), + re_path(r'^bom-download/?', views.BomDownload.as_view(), name='bom-download'), - url(r'^pricing/', views.PartPricing.as_view(), name='part-pricing'), + re_path(r'^pricing/', views.PartPricing.as_view(), name='part-pricing'), - url(r'^bom-upload/?', views.BomUpload.as_view(), name='upload-bom'), + re_path(r'^bom-upload/?', views.BomUpload.as_view(), name='upload-bom'), - url(r'^qr_code/?', views.PartQRCode.as_view(), name='part-qr'), + re_path(r'^qr_code/?', views.PartQRCode.as_view(), name='part-qr'), # Normal thumbnail with form - url(r'^thumb-select/?', views.PartImageSelect.as_view(), name='part-image-select'), - url(r'^thumb-download/', views.PartImageDownloadFromURL.as_view(), name='part-image-download'), + re_path(r'^thumb-select/?', views.PartImageSelect.as_view(), name='part-image-select'), + re_path(r'^thumb-download/', views.PartImageDownloadFromURL.as_view(), name='part-image-download'), # Any other URLs go to the part detail page - url(r'^.*$', views.PartDetail.as_view(), name='part-detail'), + re_path(r'^.*$', views.PartDetail.as_view(), name='part-detail'), ] category_parameter_urls = [ - url(r'^new/', views.CategoryParameterTemplateCreate.as_view(), name='category-param-template-create'), - url(r'^(?P\d+)/edit/', views.CategoryParameterTemplateEdit.as_view(), name='category-param-template-edit'), - url(r'^(?P\d+)/delete/', views.CategoryParameterTemplateDelete.as_view(), name='category-param-template-delete'), + re_path(r'^new/', views.CategoryParameterTemplateCreate.as_view(), name='category-param-template-create'), + re_path(r'^(?P\d+)/edit/', views.CategoryParameterTemplateEdit.as_view(), name='category-param-template-edit'), + re_path(r'^(?P\d+)/delete/', views.CategoryParameterTemplateDelete.as_view(), name='category-param-template-delete'), ] category_urls = [ # Top level subcategory display - url(r'^subcategory/', views.PartIndex.as_view(template_name='part/subcategory.html'), name='category-index-subcategory'), + re_path(r'^subcategory/', views.PartIndex.as_view(template_name='part/subcategory.html'), name='category-index-subcategory'), # Category detail views - url(r'(?P\d+)/', include([ - url(r'^delete/', views.CategoryDelete.as_view(), name='category-delete'), - url(r'^parameters/', include(category_parameter_urls)), + re_path(r'(?P\d+)/', include([ + re_path(r'^delete/', views.CategoryDelete.as_view(), name='category-delete'), + re_path(r'^parameters/', include(category_parameter_urls)), # Anything else - url(r'^.*$', views.CategoryDetail.as_view(), name='category-detail'), + re_path(r'^.*$', views.CategoryDetail.as_view(), name='category-detail'), ])) ] @@ -62,27 +62,27 @@ category_urls = [ part_urls = [ # Upload a part - url(r'^import/', views.PartImport.as_view(), name='part-import'), - url(r'^import-api/', views.PartImportAjax.as_view(), name='api-part-import'), + re_path(r'^import/', views.PartImport.as_view(), name='part-import'), + re_path(r'^import-api/', views.PartImportAjax.as_view(), name='api-part-import'), # Download a BOM upload template - url(r'^bom_template/?', views.BomUploadTemplate.as_view(), name='bom-upload-template'), + re_path(r'^bom_template/?', views.BomUploadTemplate.as_view(), name='bom-upload-template'), # Individual part using pk - url(r'^(?P\d+)/', include(part_detail_urls)), + re_path(r'^(?P\d+)/', include(part_detail_urls)), # Part category - url(r'^category/', include(category_urls)), + re_path(r'^category/', include(category_urls)), # Part parameters - url(r'^parameter/', include(part_parameter_urls)), + re_path(r'^parameter/', include(part_parameter_urls)), # Change category for multiple parts - url(r'^set-category/?', views.PartSetCategory.as_view(), name='part-set-category'), + re_path(r'^set-category/?', views.PartSetCategory.as_view(), name='part-set-category'), # Individual part using IPN as slug - url(r'^(?P[-\w]+)/', views.PartDetailFromIPN.as_view(), name='part-detail-from-ipn'), + re_path(r'^(?P[-\w]+)/', views.PartDetailFromIPN.as_view(), name='part-detail-from-ipn'), # Top level part list (display top level parts and categories) - url(r'^.*$', views.PartIndex.as_view(), name='part-index'), + re_path(r'^.*$', views.PartIndex.as_view(), name='part-index'), ] diff --git a/InvenTree/plugin/api.py b/InvenTree/plugin/api.py index 5a4ea7bae3..5c8c1b3e72 100644 --- a/InvenTree/plugin/api.py +++ b/InvenTree/plugin/api.py @@ -5,7 +5,7 @@ JSON API for the plugin app # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.conf.urls import url, include +from django.urls import include, re_path from rest_framework import generics from rest_framework import status @@ -118,18 +118,18 @@ class PluginSettingDetail(generics.RetrieveUpdateAPIView): plugin_api_urls = [ # Plugin settings URLs - url(r'^settings/', include([ - url(r'^(?P\d+)/', PluginSettingDetail.as_view(), name='api-plugin-setting-detail'), - url(r'^.*$', PluginSettingList.as_view(), name='api-plugin-setting-list'), + re_path(r'^settings/', include([ + re_path(r'^(?P\d+)/', PluginSettingDetail.as_view(), name='api-plugin-setting-detail'), + re_path(r'^.*$', PluginSettingList.as_view(), name='api-plugin-setting-list'), ])), # Detail views for a single PluginConfig item - url(r'^(?P\d+)/', include([ - url(r'^.*$', PluginDetail.as_view(), name='api-plugin-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^.*$', PluginDetail.as_view(), name='api-plugin-detail'), ])), - url(r'^install/', PluginInstall.as_view(), name='api-plugin-install'), + re_path(r'^install/', PluginInstall.as_view(), name='api-plugin-install'), # Anything else - url(r'^.*$', PluginList.as_view(), name='api-plugin-list'), + re_path(r'^.*$', PluginList.as_view(), name='api-plugin-list'), ] diff --git a/InvenTree/plugin/apps.py b/InvenTree/plugin/apps.py index c611f6f8c1..8de4cb9b6c 100644 --- a/InvenTree/plugin/apps.py +++ b/InvenTree/plugin/apps.py @@ -5,7 +5,7 @@ import logging from django.apps import AppConfig from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from maintenance_mode.core import set_maintenance_mode diff --git a/InvenTree/plugin/builtin/integration/mixins.py b/InvenTree/plugin/builtin/integration/mixins.py index 18c1afe64a..62ce38a673 100644 --- a/InvenTree/plugin/builtin/integration/mixins.py +++ b/InvenTree/plugin/builtin/integration/mixins.py @@ -6,7 +6,7 @@ import logging import json import requests -from django.conf.urls import url, include +from django.urls import include, re_path from django.db.utils import OperationalError, ProgrammingError from plugin.models import PluginConfig, PluginSetting @@ -303,7 +303,7 @@ class UrlsMixin: Urlpatterns for this plugin """ if self.has_urls: - return url(f'^{self.slug}/', include((self.urls, self.slug)), name=self.slug) + return re_path(f'^{self.slug}/', include((self.urls, self.slug)), name=self.slug) return None @property diff --git a/InvenTree/plugin/events.py b/InvenTree/plugin/events.py index b510b42683..4948366bfa 100644 --- a/InvenTree/plugin/events.py +++ b/InvenTree/plugin/events.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals import logging -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings from django.db import transaction diff --git a/InvenTree/plugin/integration.py b/InvenTree/plugin/integration.py index 7797134b14..cab3e81a8b 100644 --- a/InvenTree/plugin/integration.py +++ b/InvenTree/plugin/integration.py @@ -11,7 +11,7 @@ import pathlib from django.urls.base import reverse from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import plugin.plugin as plugin_base from plugin.helpers import get_git_log, GitStatus diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index 3276c82f45..304932f6f8 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -17,7 +17,7 @@ from importlib import reload from django.apps import apps from django.conf import settings from django.db.utils import OperationalError, ProgrammingError, IntegrityError -from django.conf.urls import url, include +from django.urls import include, re_path from django.urls import clear_url_caches from django.contrib import admin from django.utils.text import slugify @@ -570,12 +570,12 @@ class PluginsRegistry: for index, a in enumerate(urlpatterns): if hasattr(a, 'app_name'): if a.app_name == 'admin': - urlpatterns[index] = url(r'^admin/', admin.site.urls, name='inventree-admin') + urlpatterns[index] = re_path(r'^admin/', admin.site.urls, name='inventree-admin') elif a.app_name == 'plugin': urlpatterns[index] = get_plugin_urls() # replace frontendpatterns - global_pattern[0] = url('', include(urlpatterns)) + global_pattern[0] = re_path('', include(urlpatterns)) clear_url_caches() def _reload_apps(self, force_reload: bool = False): diff --git a/InvenTree/plugin/samples/integration/sample.py b/InvenTree/plugin/samples/integration/sample.py index a05e804def..2df3bc116a 100644 --- a/InvenTree/plugin/samples/integration/sample.py +++ b/InvenTree/plugin/samples/integration/sample.py @@ -6,8 +6,8 @@ from plugin import IntegrationPluginBase from plugin.mixins import AppMixin, SettingsMixin, UrlsMixin, NavigationMixin from django.http import HttpResponse -from django.utils.translation import ugettext_lazy as _ -from django.conf.urls import url, include +from django.utils.translation import gettext_lazy as _ +from django.urls import include, re_path class SampleIntegrationPlugin(AppMixin, SettingsMixin, UrlsMixin, NavigationMixin, IntegrationPluginBase): @@ -28,13 +28,13 @@ class SampleIntegrationPlugin(AppMixin, SettingsMixin, UrlsMixin, NavigationMixi def setup_urls(self): he_urls = [ - url(r'^he/', self.view_test, name='he'), - url(r'^ha/', self.view_test, name='ha'), + re_path(r'^he/', self.view_test, name='he'), + re_path(r'^ha/', self.view_test, name='ha'), ] return [ - url(r'^hi/', self.view_test, name='hi'), - url(r'^ho/', include(he_urls), name='ho'), + re_path(r'^hi/', self.view_test, name='hi'), + re_path(r'^ho/', include(he_urls), name='ho'), ] SETTINGS = { diff --git a/InvenTree/plugin/serializers.py b/InvenTree/plugin/serializers.py index 6965f398f0..7a76c48067 100644 --- a/InvenTree/plugin/serializers.py +++ b/InvenTree/plugin/serializers.py @@ -10,7 +10,7 @@ import subprocess from django.core.exceptions import ValidationError from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils import timezone from rest_framework import serializers diff --git a/InvenTree/plugin/test_integration.py b/InvenTree/plugin/test_integration.py index dbc77f7cd0..3e4c38f968 100644 --- a/InvenTree/plugin/test_integration.py +++ b/InvenTree/plugin/test_integration.py @@ -2,7 +2,7 @@ from django.test import TestCase from django.conf import settings -from django.conf.urls import url, include +from django.urls import include, re_path from django.contrib.auth import get_user_model from datetime import datetime @@ -66,7 +66,7 @@ class UrlsMixinTest(BaseMixinDefinition, TestCase): class UrlsCls(UrlsMixin, IntegrationPluginBase): def test(): return 'ccc' - URLS = [url('testpath', test, name='test'), ] + URLS = [re_path('testpath', test, name='test'), ] self.mixin = UrlsCls() class NoUrlsCls(UrlsMixin, IntegrationPluginBase): @@ -81,7 +81,7 @@ class UrlsMixinTest(BaseMixinDefinition, TestCase): self.assertEqual(self.mixin.base_url, target_url) # urlpattern - target_pattern = url(f'^{plg_name}/', include((self.mixin.urls, plg_name)), name=plg_name) + target_pattern = re_path(f'^{plg_name}/', include((self.mixin.urls, plg_name)), name=plg_name) self.assertEqual(self.mixin.urlpatterns.reverse_dict, target_pattern.reverse_dict) # resolve the view diff --git a/InvenTree/plugin/urls.py b/InvenTree/plugin/urls.py index d41a84e2f1..08f547aca2 100644 --- a/InvenTree/plugin/urls.py +++ b/InvenTree/plugin/urls.py @@ -2,7 +2,7 @@ URL lookup for plugin app """ -from django.conf.urls import url, include +from django.urls import include, re_path from plugin import registry @@ -21,4 +21,4 @@ def get_plugin_urls(): if plugin.mixin_enabled('urls'): urls.append(plugin.urlpatterns) - return url(f'^{PLUGIN_BASE}/', include((urls, 'plugin'))) + return re_path(f'^{PLUGIN_BASE}/', include((urls, 'plugin'))) diff --git a/InvenTree/report/api.py b/InvenTree/report/api.py index c7d2b15e4d..8a063001a6 100644 --- a/InvenTree/report/api.py +++ b/InvenTree/report/api.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ -from django.conf.urls import url, include +from django.utils.translation import gettext_lazy as _ +from django.urls import include, path, re_path from django.core.exceptions import ValidationError, FieldError from django.http import HttpResponse @@ -31,8 +31,8 @@ from .models import SalesOrderReport from .serializers import TestReportSerializer from .serializers import BuildReportSerializer from .serializers import BOMReportSerializer -from .serializers import POReportSerializer -from .serializers import SOReportSerializer +from .serializers import PurchaseOrderReportSerializer +from .serializers import SalesOrderReportSerializer class ReportListView(generics.ListAPIView): @@ -561,12 +561,12 @@ class BuildReportPrint(generics.RetrieveAPIView, BuildReportMixin, ReportPrintMi return self.print(request, builds) -class POReportList(ReportListView, OrderReportMixin): +class PurchaseOrderReportList(ReportListView, OrderReportMixin): OrderModel = order.models.PurchaseOrder queryset = PurchaseOrderReport.objects.all() - serializer_class = POReportSerializer + serializer_class = PurchaseOrderReportSerializer def filter_queryset(self, queryset): @@ -618,16 +618,16 @@ class POReportList(ReportListView, OrderReportMixin): return queryset -class POReportDetail(generics.RetrieveUpdateDestroyAPIView): +class PurchaseOrderReportDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for a single PurchaseOrderReport object """ queryset = PurchaseOrderReport.objects.all() - serializer_class = POReportSerializer + serializer_class = PurchaseOrderReportSerializer -class POReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin): +class PurchaseOrderReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin): """ API endpoint for printing a PurchaseOrderReport object """ @@ -635,7 +635,7 @@ class POReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin OrderModel = order.models.PurchaseOrder queryset = PurchaseOrderReport.objects.all() - serializer_class = POReportSerializer + serializer_class = PurchaseOrderReportSerializer def get(self, request, *args, **kwargs): @@ -644,12 +644,12 @@ class POReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin return self.print(request, orders) -class SOReportList(ReportListView, OrderReportMixin): +class SalesOrderReportList(ReportListView, OrderReportMixin): OrderModel = order.models.SalesOrder queryset = SalesOrderReport.objects.all() - serializer_class = SOReportSerializer + serializer_class = SalesOrderReportSerializer def filter_queryset(self, queryset): @@ -701,16 +701,16 @@ class SOReportList(ReportListView, OrderReportMixin): return queryset -class SOReportDetail(generics.RetrieveUpdateDestroyAPIView): +class SalesOrderReportDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for a single SalesOrderReport object """ queryset = SalesOrderReport.objects.all() - serializer_class = SOReportSerializer + serializer_class = SalesOrderReportSerializer -class SOReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin): +class SalesOrderReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin): """ API endpoint for printing a PurchaseOrderReport object """ @@ -718,7 +718,7 @@ class SOReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin OrderModel = order.models.SalesOrder queryset = SalesOrderReport.objects.all() - serializer_class = SOReportSerializer + serializer_class = SalesOrderReportSerializer def get(self, request, *args, **kwargs): @@ -730,62 +730,62 @@ class SOReportPrint(generics.RetrieveAPIView, OrderReportMixin, ReportPrintMixin report_api_urls = [ # Purchase order reports - url(r'po/', include([ + re_path(r'po/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/', POReportPrint.as_view(), name='api-po-report-print'), - url(r'^$', POReportDetail.as_view(), name='api-po-report-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/', PurchaseOrderReportPrint.as_view(), name='api-po-report-print'), + path('', PurchaseOrderReportDetail.as_view(), name='api-po-report-detail'), ])), # List view - url(r'^$', POReportList.as_view(), name='api-po-report-list'), + path('', PurchaseOrderReportList.as_view(), name='api-po-report-list'), ])), # Sales order reports - url(r'so/', include([ + re_path(r'so/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/', SOReportPrint.as_view(), name='api-so-report-print'), - url(r'^$', SOReportDetail.as_view(), name='api-so-report-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/', SalesOrderReportPrint.as_view(), name='api-so-report-print'), + path('', SalesOrderReportDetail.as_view(), name='api-so-report-detail'), ])), - url(r'^$', SOReportList.as_view(), name='api-so-report-list'), + path('', SalesOrderReportList.as_view(), name='api-so-report-list'), ])), # Build reports - url(r'build/', include([ + re_path(r'build/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/?', BuildReportPrint.as_view(), name='api-build-report-print'), - url(r'^.$', BuildReportDetail.as_view(), name='api-build-report-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/?', BuildReportPrint.as_view(), name='api-build-report-print'), + re_path(r'^.$', BuildReportDetail.as_view(), name='api-build-report-detail'), ])), # List view - url(r'^.*$', BuildReportList.as_view(), name='api-build-report-list'), + re_path(r'^.*$', BuildReportList.as_view(), name='api-build-report-list'), ])), # Bill of Material reports - url(r'bom/', include([ + re_path(r'bom/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/?', BOMReportPrint.as_view(), name='api-bom-report-print'), - url(r'^.*$', BOMReportDetail.as_view(), name='api-bom-report-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/?', BOMReportPrint.as_view(), name='api-bom-report-print'), + re_path(r'^.*$', BOMReportDetail.as_view(), name='api-bom-report-detail'), ])), # List view - url(r'^.*$', BOMReportList.as_view(), name='api-bom-report-list'), + re_path(r'^.*$', BOMReportList.as_view(), name='api-bom-report-list'), ])), # Stock item test reports - url(r'test/', include([ + re_path(r'test/', include([ # Detail views - url(r'^(?P\d+)/', include([ - url(r'print/?', StockItemTestReportPrint.as_view(), name='api-stockitem-testreport-print'), - url(r'^.*$', StockItemTestReportDetail.as_view(), name='api-stockitem-testreport-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'print/?', StockItemTestReportPrint.as_view(), name='api-stockitem-testreport-print'), + re_path(r'^.*$', StockItemTestReportDetail.as_view(), name='api-stockitem-testreport-detail'), ])), # List view - url(r'^.*$', StockItemTestReportList.as_view(), name='api-stockitem-testreport-list'), + re_path(r'^.*$', StockItemTestReportList.as_view(), name='api-stockitem-testreport-list'), ])), ] diff --git a/InvenTree/report/models.py b/InvenTree/report/models.py index 3ee19bd5e6..32ba9077b1 100644 --- a/InvenTree/report/models.py +++ b/InvenTree/report/models.py @@ -466,6 +466,7 @@ class PurchaseOrderReport(ReportTemplateBase): return { 'description': order.description, 'lines': order.lines, + 'extra_lines': order.extra_lines, 'order': order, 'reference': order.reference, 'supplier': order.supplier, @@ -505,6 +506,7 @@ class SalesOrderReport(ReportTemplateBase): 'customer': order.customer, 'description': order.description, 'lines': order.lines, + 'extra_lines': order.extra_lines, 'order': order, 'prefix': common.models.InvenTreeSetting.get_setting('SALESORDER_REFERENCE_PREFIX'), 'reference': order.reference, diff --git a/InvenTree/report/serializers.py b/InvenTree/report/serializers.py index fa7de1a3ea..6e3e36df18 100644 --- a/InvenTree/report/serializers.py +++ b/InvenTree/report/serializers.py @@ -58,7 +58,7 @@ class BOMReportSerializer(InvenTreeModelSerializer): ] -class POReportSerializer(InvenTreeModelSerializer): +class PurchaseOrderReportSerializer(InvenTreeModelSerializer): template = InvenTreeAttachmentSerializerField(required=True) @@ -74,7 +74,7 @@ class POReportSerializer(InvenTreeModelSerializer): ] -class SOReportSerializer(InvenTreeModelSerializer): +class SalesOrderReportSerializer(InvenTreeModelSerializer): template = InvenTreeAttachmentSerializerField(required=True) diff --git a/InvenTree/report/templates/report/inventree_po_report.html b/InvenTree/report/templates/report/inventree_po_report.html index f999644c2e..d1cae75c3b 100644 --- a/InvenTree/report/templates/report/inventree_po_report.html +++ b/InvenTree/report/templates/report/inventree_po_report.html @@ -15,7 +15,7 @@ content: "v{{report_revision}} - {{ date.isoformat }}"; {% endblock %} {% block bottom_center %} -content: "InvenTree v{% inventree_version %}"; +content: "{% inventree_version shortstring=True %}"; {% endblock %} {% block style %} diff --git a/InvenTree/report/templates/report/inventree_so_report.html b/InvenTree/report/templates/report/inventree_so_report.html index 255f0c6a50..5cb4900719 100644 --- a/InvenTree/report/templates/report/inventree_so_report.html +++ b/InvenTree/report/templates/report/inventree_so_report.html @@ -16,7 +16,7 @@ content: "v{{report_revision}} - {{ date.isoformat }}"; {% endblock %} {% block bottom_center %} -content: "InvenTree v{% inventree_version %}"; +content: "{% inventree_version shortstring=True %}"; {% endblock %} {% block style %} diff --git a/InvenTree/report/templates/report/inventree_test_report_base.html b/InvenTree/report/templates/report/inventree_test_report_base.html index d702973c30..73ee55c680 100644 --- a/InvenTree/report/templates/report/inventree_test_report_base.html +++ b/InvenTree/report/templates/report/inventree_test_report_base.html @@ -14,7 +14,7 @@ content: "{{ date.isoformat }}"; {% endblock %} {% block bottom_center %} -content: "InvenTree v{% inventree_version %}"; +content: "{% inventree_version shortstring=True %}"; {% endblock %} {% block top_center %} diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index d4fc5c93d1..0c0dafbf41 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -9,11 +9,11 @@ from collections import OrderedDict from datetime import datetime, timedelta from django.core.exceptions import ValidationError as DjangoValidationError -from django.conf.urls import url, include +from django.urls import include, path, re_path from django.http import JsonResponse from django.db.models import Q, F from django.db import transaction -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as rest_filters @@ -23,6 +23,8 @@ from rest_framework.serializers import ValidationError from rest_framework.response import Response from rest_framework import generics, filters +from build.models import Build + import common.settings import common.models @@ -36,7 +38,7 @@ from InvenTree.filters import InvenTreeOrderingFilter from order.models import PurchaseOrder from order.models import SalesOrder, SalesOrderAllocation -from order.serializers import POSerializer +from order.serializers import PurchaseOrderSerializer from part.models import BomItem, Part, PartCategory from part.serializers import PartBriefSerializer @@ -1159,6 +1161,19 @@ class StockItemTestResultList(generics.ListCreateAPIView): queryset = super().filter_queryset(queryset) + # Filter by 'build' + build = params.get('build', None) + + if build is not None: + + try: + build = Build.objects.get(pk=build) + + queryset = queryset.filter(stock_item__build=build) + + except (ValueError, Build.DoesNotExist): + pass + # Filter by stock item item = params.get('stock_item', None) @@ -1300,7 +1315,7 @@ class StockTrackingList(generics.ListAPIView): if 'purchaseorder' in deltas: try: order = PurchaseOrder.objects.get(pk=deltas['purchaseorder']) - serializer = POSerializer(order) + serializer = PurchaseOrderSerializer(order) deltas['purchaseorder_detail'] = serializer.data except: pass @@ -1368,47 +1383,47 @@ class LocationDetail(generics.RetrieveUpdateDestroyAPIView): stock_api_urls = [ - url(r'^location/', include([ + re_path(r'^location/', include([ - url(r'^tree/', StockLocationTree.as_view(), name='api-location-tree'), + re_path(r'^tree/', StockLocationTree.as_view(), name='api-location-tree'), - url(r'^(?P\d+)/', LocationDetail.as_view(), name='api-location-detail'), - url(r'^.*$', StockLocationList.as_view(), name='api-location-list'), + re_path(r'^(?P\d+)/', LocationDetail.as_view(), name='api-location-detail'), + re_path(r'^.*$', StockLocationList.as_view(), name='api-location-list'), ])), # Endpoints for bulk stock adjustment actions - url(r'^count/', StockCount.as_view(), name='api-stock-count'), - url(r'^add/', StockAdd.as_view(), name='api-stock-add'), - url(r'^remove/', StockRemove.as_view(), name='api-stock-remove'), - url(r'^transfer/', StockTransfer.as_view(), name='api-stock-transfer'), - url(r'^assign/', StockAssign.as_view(), name='api-stock-assign'), - url(r'^merge/', StockMerge.as_view(), name='api-stock-merge'), + re_path(r'^count/', StockCount.as_view(), name='api-stock-count'), + re_path(r'^add/', StockAdd.as_view(), name='api-stock-add'), + re_path(r'^remove/', StockRemove.as_view(), name='api-stock-remove'), + re_path(r'^transfer/', StockTransfer.as_view(), name='api-stock-transfer'), + re_path(r'^assign/', StockAssign.as_view(), name='api-stock-assign'), + re_path(r'^merge/', StockMerge.as_view(), name='api-stock-merge'), # StockItemAttachment API endpoints - url(r'^attachment/', include([ - url(r'^(?P\d+)/', StockAttachmentDetail.as_view(), name='api-stock-attachment-detail'), - url(r'^$', StockAttachmentList.as_view(), name='api-stock-attachment-list'), + re_path(r'^attachment/', include([ + re_path(r'^(?P\d+)/', StockAttachmentDetail.as_view(), name='api-stock-attachment-detail'), + path('', StockAttachmentList.as_view(), name='api-stock-attachment-list'), ])), # StockItemTestResult API endpoints - url(r'^test/', include([ - url(r'^(?P\d+)/', StockItemTestResultDetail.as_view(), name='api-stock-test-result-detail'), - url(r'^.*$', StockItemTestResultList.as_view(), name='api-stock-test-result-list'), + re_path(r'^test/', include([ + re_path(r'^(?P\d+)/', StockItemTestResultDetail.as_view(), name='api-stock-test-result-detail'), + re_path(r'^.*$', StockItemTestResultList.as_view(), name='api-stock-test-result-list'), ])), # StockItemTracking API endpoints - url(r'^track/', include([ - url(r'^(?P\d+)/', StockTrackingDetail.as_view(), name='api-stock-tracking-detail'), - url(r'^.*$', StockTrackingList.as_view(), name='api-stock-tracking-list'), + re_path(r'^track/', include([ + re_path(r'^(?P\d+)/', StockTrackingDetail.as_view(), name='api-stock-tracking-detail'), + re_path(r'^.*$', StockTrackingList.as_view(), name='api-stock-tracking-list'), ])), # Detail views for a single stock item - url(r'^(?P\d+)/', include([ - url(r'^serialize/', StockItemSerialize.as_view(), name='api-stock-item-serialize'), - url(r'^install/', StockItemInstall.as_view(), name='api-stock-item-install'), - url(r'^.*$', StockDetail.as_view(), name='api-stock-detail'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^serialize/', StockItemSerialize.as_view(), name='api-stock-item-serialize'), + re_path(r'^install/', StockItemInstall.as_view(), name='api-stock-item-install'), + re_path(r'^.*$', StockDetail.as_view(), name='api-stock-detail'), ])), # Anything else - url(r'^.*$', StockList.as_view(), name='api-stock-list'), + re_path(r'^.*$', StockList.as_view(), name='api-stock-list'), ] diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index ef65b25cd9..3860936ae7 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from django import forms from django.forms.utils import ErrorDict -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from mptt.fields import TreeNodeChoiceField diff --git a/InvenTree/stock/migrations/0061_auto_20210511_0911.py b/InvenTree/stock/migrations/0061_auto_20210511_0911.py index 8d7a398f04..1e20071d59 100644 --- a/InvenTree/stock/migrations/0061_auto_20210511_0911.py +++ b/InvenTree/stock/migrations/0061_auto_20210511_0911.py @@ -78,7 +78,7 @@ def update_history(apps, schema_editor): tracking_type = StockHistoryCode.STOCK_REMOVE # Extract the number of removed items - result = re.search("^removed ([\d\.]+) items", title) + result = re.search(r"^removed ([\d\.]+) items", title) if result: @@ -102,7 +102,7 @@ def update_history(apps, schema_editor): elif 'moved to' in title: tracking_type = StockHistoryCode.STOCK_MOVE - result = re.search('^Moved to (.*)( - )*(.*) \(from.*$', entry.title) + result = re.search(r'^Moved to (.*)( - )*(.*) \(from.*$', entry.title) if result: # Legacy tracking entries recorded the location in multiple ways, because.. why not? @@ -157,7 +157,7 @@ def update_history(apps, schema_editor): tracking_type = StockHistoryCode.STOCK_ADD # Extract the number of added items - result = re.search("^added ([\d\.]+) items", title) + result = re.search(r"^added ([\d\.]+) items", title) if result: diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index 941219da6c..a263700a41 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -10,7 +10,7 @@ from datetime import datetime, timedelta from django.db import transaction from django.core.exceptions import ValidationError as DjangoValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.db.models.functions import Coalesce from django.db.models import Case, When, Value from django.db.models import BooleanField diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py index bb4a56e2dc..11ad145d08 100644 --- a/InvenTree/stock/urls.py +++ b/InvenTree/stock/urls.py @@ -2,55 +2,55 @@ URL lookup for Stock app """ -from django.conf.urls import url, include +from django.urls import include, re_path from stock import views location_urls = [ - url(r'^(?P\d+)/', include([ - url(r'^delete/?', views.StockLocationDelete.as_view(), name='stock-location-delete'), - url(r'^qr_code/?', views.StockLocationQRCode.as_view(), name='stock-location-qr'), + re_path(r'^(?P\d+)/', include([ + re_path(r'^delete/?', views.StockLocationDelete.as_view(), name='stock-location-delete'), + re_path(r'^qr_code/?', views.StockLocationQRCode.as_view(), name='stock-location-qr'), # Anything else - url('^.*$', views.StockLocationDetail.as_view(), name='stock-location-detail'), + re_path('^.*$', views.StockLocationDetail.as_view(), name='stock-location-detail'), ])), ] stock_item_detail_urls = [ - url(r'^convert/', views.StockItemConvert.as_view(), name='stock-item-convert'), - url(r'^delete/', views.StockItemDelete.as_view(), name='stock-item-delete'), - url(r'^qr_code/', views.StockItemQRCode.as_view(), name='stock-item-qr'), - url(r'^delete_test_data/', views.StockItemDeleteTestData.as_view(), name='stock-item-delete-test-data'), - url(r'^return/', views.StockItemReturnToStock.as_view(), name='stock-item-return'), + re_path(r'^convert/', views.StockItemConvert.as_view(), name='stock-item-convert'), + re_path(r'^delete/', views.StockItemDelete.as_view(), name='stock-item-delete'), + re_path(r'^qr_code/', views.StockItemQRCode.as_view(), name='stock-item-qr'), + re_path(r'^delete_test_data/', views.StockItemDeleteTestData.as_view(), name='stock-item-delete-test-data'), + re_path(r'^return/', views.StockItemReturnToStock.as_view(), name='stock-item-return'), - url(r'^add_tracking/', views.StockItemTrackingCreate.as_view(), name='stock-tracking-create'), + re_path(r'^add_tracking/', views.StockItemTrackingCreate.as_view(), name='stock-tracking-create'), - url('^.*$', views.StockItemDetail.as_view(), name='stock-item-detail'), + re_path('^.*$', views.StockItemDetail.as_view(), name='stock-item-detail'), ] stock_tracking_urls = [ # edit - url(r'^(?P\d+)/edit/', views.StockItemTrackingEdit.as_view(), name='stock-tracking-edit'), + re_path(r'^(?P\d+)/edit/', views.StockItemTrackingEdit.as_view(), name='stock-tracking-edit'), # delete - url(r'^(?P\d+)/delete', views.StockItemTrackingDelete.as_view(), name='stock-tracking-delete'), + re_path(r'^(?P\d+)/delete', views.StockItemTrackingDelete.as_view(), name='stock-tracking-delete'), ] stock_urls = [ # Stock location - url(r'^location/', include(location_urls)), + re_path(r'^location/', include(location_urls)), - url(r'^item/uninstall/', views.StockItemUninstall.as_view(), name='stock-item-uninstall'), + re_path(r'^item/uninstall/', views.StockItemUninstall.as_view(), name='stock-item-uninstall'), - url(r'^track/', include(stock_tracking_urls)), + re_path(r'^track/', include(stock_tracking_urls)), # Individual stock items - url(r'^item/(?P\d+)/', include(stock_item_detail_urls)), + re_path(r'^item/(?P\d+)/', include(stock_item_detail_urls)), - url(r'^sublocations/', views.StockIndex.as_view(template_name='stock/sublocation.html'), name='stock-sublocations'), + re_path(r'^sublocations/', views.StockIndex.as_view(template_name='stock/sublocation.html'), name='stock-sublocations'), - url(r'^.*$', views.StockIndex.as_view(), name='stock-index'), + re_path(r'^.*$', views.StockIndex.as_view(), name='stock-index'), ] diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index b0661dd0e3..3bca77ec9e 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -15,7 +15,7 @@ from django.http import HttpResponseRedirect from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from moneyed import CURRENCIES diff --git a/InvenTree/templates/403.html b/InvenTree/templates/403.html index 372bd9fe27..4ee8367d9c 100644 --- a/InvenTree/templates/403.html +++ b/InvenTree/templates/403.html @@ -1,8 +1,9 @@ {% extends "base.html" %} {% load i18n %} +{% load inventree_extras %} {% block page_title %} -InvenTree | {% trans "Permission Denied" %} +{% inventree_title %} | {% trans "Permission Denied" %} {% endblock %} {% block content %} diff --git a/InvenTree/templates/404.html b/InvenTree/templates/404.html index 3cb6464d99..aae55031f3 100644 --- a/InvenTree/templates/404.html +++ b/InvenTree/templates/404.html @@ -1,8 +1,9 @@ {% extends "base.html" %} {% load i18n %} +{% load inventree_extras %} {% block page_title %} -InvenTree | {% trans "Page Not Found" %} +{% inventree_title %} | {% trans "Page Not Found" %} {% endblock %} {% block content %} diff --git a/InvenTree/templates/500.html b/InvenTree/templates/500.html index 3fab6c0a17..f50a5ea6fe 100644 --- a/InvenTree/templates/500.html +++ b/InvenTree/templates/500.html @@ -1,8 +1,9 @@ {% extends "base.html" %} {% load i18n %} +{% load inventree_extras %} {% block page_title %} -InvenTree | {% trans "Internal Server Error" %} +{% inventree_title %} | {% trans "Internal Server Error" %} {% endblock %} {% block content %} @@ -11,7 +12,7 @@ InvenTree | {% trans "Internal Server Error" %}

{% trans "Internal Server Error" %}

- {% trans "The InvenTree server raised an internal error" %}
+ {% blocktrans %}The {{ inventree_title }} server raised an internal error{% endblocktrans %}
{% trans "Refer to the error log in the admin interface for further details" %}
diff --git a/InvenTree/templates/503.html b/InvenTree/templates/503.html index fbee60c694..606fc03ff0 100644 --- a/InvenTree/templates/503.html +++ b/InvenTree/templates/503.html @@ -1,5 +1,6 @@ {% extends "skeleton.html" %} {% load static %} +{% load inventree_extras %} {% load i18n %} {% block head %} @@ -30,7 +31,7 @@
diff --git a/InvenTree/templates/InvenTree/settings/global.html b/InvenTree/templates/InvenTree/settings/global.html index 60ae84f001..4d36d59369 100644 --- a/InvenTree/templates/InvenTree/settings/global.html +++ b/InvenTree/templates/InvenTree/settings/global.html @@ -15,6 +15,7 @@ {% include "InvenTree/settings/setting.html" with key="INVENTREE_INSTANCE" icon="fa-info-circle" %} {% include "InvenTree/settings/setting.html" with key="INVENTREE_INSTANCE_TITLE" icon="fa-info-circle" %} + {% include "InvenTree/settings/setting.html" with key="INVENTREE_RESTRICT_ABOUT" icon="fa-info-circle" %} {% include "InvenTree/settings/setting.html" with key="INVENTREE_BASE_URL" icon="fa-globe" %} {% include "InvenTree/settings/setting.html" with key="INVENTREE_COMPANY_NAME" icon="fa-building" %} {% include "InvenTree/settings/setting.html" with key="INVENTREE_DOWNLOAD_FROM_URL" icon="fa-cloud-download-alt" %} diff --git a/InvenTree/templates/InvenTree/settings/plugin.html b/InvenTree/templates/InvenTree/settings/plugin.html index 2366096b87..94a166c84a 100644 --- a/InvenTree/templates/InvenTree/settings/plugin.html +++ b/InvenTree/templates/InvenTree/settings/plugin.html @@ -13,7 +13,7 @@ {% block content %}
- {% trans "Changing the settings below require you to immediatly restart InvenTree. Do not change this while under active usage." %} + {% trans "Changing the settings below require you to immediatly restart the server. Do not change this while under active usage." %}
diff --git a/InvenTree/templates/InvenTree/settings/plugin_settings.html b/InvenTree/templates/InvenTree/settings/plugin_settings.html index 9c5fa2d7c0..79150ec879 100644 --- a/InvenTree/templates/InvenTree/settings/plugin_settings.html +++ b/InvenTree/templates/InvenTree/settings/plugin_settings.html @@ -85,7 +85,7 @@ {% if plugin.is_package %} {% trans "This plugin was installed as a package" %} {% else %} - {% trans "This plugin was found in a local InvenTree path" %} + {% trans "This plugin was found in a local server path" %} {% endif %} diff --git a/InvenTree/templates/InvenTree/settings/user.html b/InvenTree/templates/InvenTree/settings/user.html index 32bc4d43e7..d3d1e35210 100644 --- a/InvenTree/templates/InvenTree/settings/user.html +++ b/InvenTree/templates/InvenTree/settings/user.html @@ -13,15 +13,15 @@ {% endblock %} {% block actions %} -{% inventree_demo_mode as demo %} -{% if not demo %} +{% inventree_customize 'hide_password_reset' as hide_password_reset %} +{% if not hide_password_reset %}
{% trans "Set Password" %}
+{% endif %}
{% trans "Edit" %}
-{% endif %} {% endblock %} {% block content %} diff --git a/InvenTree/templates/InvenTree/settings/user_display.html b/InvenTree/templates/InvenTree/settings/user_display.html index f5e74b04c1..1f52c095ac 100644 --- a/InvenTree/templates/InvenTree/settings/user_display.html +++ b/InvenTree/templates/InvenTree/settings/user_display.html @@ -101,7 +101,7 @@

{% trans "Help the translation efforts!" %}

-

{% blocktrans with link="https://crowdin.com/project/inventree" %}Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged.{% endblocktrans %}

+

{% blocktrans with link="https://crowdin.com/project/inventree" %}Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged.{% endblocktrans %}

diff --git a/InvenTree/templates/account/base.html b/InvenTree/templates/account/base.html index 6c54faac67..9a68f7ba31 100644 --- a/InvenTree/templates/account/base.html +++ b/InvenTree/templates/account/base.html @@ -67,7 +67,7 @@
@@ -89,7 +89,7 @@ - + diff --git a/InvenTree/templates/account/login.html b/InvenTree/templates/account/login.html index 6e62560bfa..042c119440 100644 --- a/InvenTree/templates/account/login.html +++ b/InvenTree/templates/account/login.html @@ -10,8 +10,8 @@ {% settings_value 'LOGIN_ENABLE_REG' as enable_reg %} {% settings_value 'LOGIN_ENABLE_PWD_FORGOT' as enable_pwd_forgot %} {% settings_value 'LOGIN_ENABLE_SSO' as enable_sso %} +{% inventree_customize 'login_message' as login_message %} {% mail_configured as mail_conf %} -{% inventree_demo_mode as demo %}

{% trans "Sign In" %}

@@ -35,19 +35,15 @@ for a account and sign in below:{% endblocktrans %}

{% endif %}
+ {% if login_message %} +
{{ login_message | safe }}
+ {% endif %}
- {% if mail_conf and enable_pwd_forgot and not demo %} + {% if mail_conf and enable_pwd_forgot %} {% trans "Forgot Password?" %} {% endif %} - {% if demo %} -

-

- {% trans "InvenTree demo instance" %} - {% trans "Click here for login details" %} -
-

- {% endif %} {% if enable_sso %} diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html index 0739b42b6e..483a8ca6ad 100644 --- a/InvenTree/templates/base.html +++ b/InvenTree/templates/base.html @@ -7,7 +7,7 @@ {% settings_value "REPORT_ENABLE" as report_enabled %} {% settings_value "SERVER_RESTART_REQUIRED" as server_restart_required %} {% settings_value "LABEL_ENABLE" with user=user as labels_enabled %} -{% inventree_demo_mode as demo_mode %} +{% inventree_show_about user as show_about %} @@ -93,7 +93,7 @@ {% block alerts %}
- {% if server_restart_required and not demo_mode %} + {% if server_restart_required %} {% include 'modals.html' %} - {% include 'about.html' %} + {% if show_about %}{% include 'about.html' %}{% endif %} {% include "notifications.html" %} {% include "search.html" %}
@@ -165,8 +165,9 @@ + - + diff --git a/InvenTree/templates/email/email.html b/InvenTree/templates/email/email.html index 97e9a40f37..0b3c944da4 100644 --- a/InvenTree/templates/email/email.html +++ b/InvenTree/templates/email/email.html @@ -32,7 +32,7 @@ {% block footer_prefix %} {% endblock %} -

{% trans "InvenTree version" %}: {% inventree_version %} - inventree.readthedocs.io

+

{% inventree_version shortstring=True %} - readthedocs.io

{% block footer_suffix %} {% endblock %} diff --git a/InvenTree/templates/js/translated/barcode.js b/InvenTree/templates/js/translated/barcode.js index b08d9170bc..eb8a7f98b7 100644 --- a/InvenTree/templates/js/translated/barcode.js +++ b/InvenTree/templates/js/translated/barcode.js @@ -19,6 +19,7 @@ linkBarcodeDialog, scanItemsIntoLocation, unlinkBarcode, + onBarcodeScanClicked, */ function makeBarcodeInput(placeholderText='', hintText='') { @@ -31,6 +32,9 @@ function makeBarcodeInput(placeholderText='', hintText='') { hintText = hintText || '{% trans "Enter barcode data" %}'; var html = ` +
@@ -39,6 +43,7 @@ function makeBarcodeInput(placeholderText='', hintText='') { +
${hintText}
@@ -48,6 +53,44 @@ function makeBarcodeInput(placeholderText='', hintText='') { return html; } +qrScanner = null; + +function startQrScanner() { + $('#barcode_scan_video_container').show(); + qrScanner.start(); +} + +function stopQrScanner() { + if (qrScanner != null) qrScanner.stop(); + $('#barcode_scan_video_container').hide(); +} + +function onBarcodeScanClicked(e) { + if ($('#barcode_scan_video_container').is(':visible') == false) startQrScanner(); else stopQrScanner(); +} + +function onCameraAvailable(hasCamera, options) { + if ( hasCamera == true ) { + // Camera is only acccessible if page is served over secure connection + if ( window.isSecureContext == true ) { + qrScanner = new QrScanner(document.getElementById('barcode_scan_video'), (result) => { + onBarcodeScanCompleted(result, options); + }, { + highlightScanRegion: true, + highlightCodeOutline: true, + }); + $('#barcode_scan_btn').show(); + } + } +} + +function onBarcodeScanCompleted(result, options) { + if (result.data == '') return; + console.log('decoded qr code:', result.data); + stopQrScanner(); + postBarcodeData(result.data, options); +} + function makeNotesField(options={}) { var tooltip = options.tooltip || '{% trans "Enter optional notes for stock transfer" %}'; @@ -186,6 +229,11 @@ function barcodeDialog(title, options={}) { $(modal).on('shown.bs.modal', function() { $(modal + ' .modal-form-content').scrollTop(0); + // Check for qr-scanner camera + QrScanner.hasCamera().then( (hasCamera) => { + onCameraAvailable(hasCamera, options); + }); + var barcode = $(modal + ' #barcode'); // Handle 'enter' key on barcode @@ -220,6 +268,12 @@ function barcodeDialog(title, options={}) { }); + $(modal).on('hidden.bs.modal', function() { + stopQrScanner(); + if (qrScanner != null) qrScanner.destroy(); + qrScanner = null; + }); + modalSetTitle(modal, title); if (options.onSubmit) { diff --git a/InvenTree/templates/js/translated/bom.js b/InvenTree/templates/js/translated/bom.js index 2d7796edcd..e4674d5989 100644 --- a/InvenTree/templates/js/translated/bom.js +++ b/InvenTree/templates/js/translated/bom.js @@ -743,11 +743,29 @@ function loadBomTable(table, options={}) { field: 'sub_part', title: '{% trans "Part" %}', sortable: true, + switchable: false, formatter: function(value, row) { var url = `/part/${row.sub_part}/`; - var html = imageHoverIcon(row.sub_part_detail.thumbnail) + renderLink(row.sub_part_detail.full_name, url); + var html = ''; var sub_part = row.sub_part_detail; + + // Display an extra icon if this part is an assembly + if (sub_part.assembly) { + + if (row.sub_assembly_received) { + // Data received, ignore + } else if (row.sub_assembly_requested) { + html += ``; + } else { + html += ` + + + `; + } + } + + html += imageHoverIcon(sub_part.thumbnail) + renderLink(row.sub_part_detail.full_name, url); html += makePartIcons(sub_part); @@ -759,13 +777,6 @@ function loadBomTable(table, options={}) { html += makeIconBadge('fa-sitemap', '{% trans "Variant stock allowed" %}'); } - // Display an extra icon if this part is an assembly - if (sub_part.assembly) { - var text = ``; - - html += renderLink(text, `/part/${row.sub_part}/bom/`); - } - return html; } } @@ -1027,14 +1038,6 @@ function loadBomTable(table, options={}) { // This function may be called recursively for multi-level BOMs function requestSubItems(bom_pk, part_pk, depth=0) { - // Prevent multi-level recursion - const MAX_BOM_DEPTH = 25; - - if (depth >= MAX_BOM_DEPTH) { - console.log(`Maximum BOM depth (${MAX_BOM_DEPTH}) reached!`); - return; - } - inventreeGet( options.bom_url, { @@ -1049,17 +1052,13 @@ function loadBomTable(table, options={}) { for (var idx = 0; idx < response.length; idx++) { response[idx].parentId = bom_pk; } + + var row = $(table).bootstrapTable('getRowByUniqueId', bom_pk); + row.sub_assembly_received = true; + + $(table).bootstrapTable('updateByUniqueId', bom_pk, row, true); table.bootstrapTable('append', response); - - // Next, re-iterate and check if the new items also have sub items - response.forEach(function(bom_item) { - if (bom_item.sub_part_detail.assembly) { - requestSubItems(bom_item.pk, bom_item.sub_part, depth + 1); - } - }); - - table.treegrid('collapseAll'); }, error: function(xhr) { console.log('Error requesting BOM for part=' + part_pk); @@ -1103,7 +1102,6 @@ function loadBomTable(table, options={}) { formatNoMatches: function() { return '{% trans "No BOM items found" %}'; }, - clickToSelect: true, queryParams: filters, original: params, columns: cols, @@ -1117,32 +1115,26 @@ function loadBomTable(table, options={}) { }); table.treegrid('collapseAll'); + + // Callback for 'load sub assembly' button + $(table).find('.load-sub-assembly').click(function(event) { + + event.preventDefault(); + + var pk = $(this).attr('pk'); + var row = $(table).bootstrapTable('getRowByUniqueId', pk); + + // Request BOM data for this subassembly + requestSubItems(row.pk, row.sub_part); + + row.sub_assembly_requested = true; + $(table).bootstrapTable('updateByUniqueId', pk, row, true); + }); }, onLoadSuccess: function() { - if (options.editable) { table.bootstrapTable('uncheckAll'); } - - var data = table.bootstrapTable('getData'); - - for (var idx = 0; idx < data.length; idx++) { - var row = data[idx]; - - // If a row already has a parent ID set, it's already been updated! - if (row.parentId) { - continue; - } - - // Set the parent ID of the top-level rows - row.parentId = parent_id; - - table.bootstrapTable('updateRow', idx, row, true); - - if (row.sub_part_detail.assembly) { - requestSubItems(row.pk, row.sub_part); - } - } }, }); diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index 65fc3a4d6c..c9ebbe0e22 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -264,7 +264,7 @@ function makeBuildOutputButtons(output_id, build_info, options={}) { var html = `
`; // Tracked parts? Must be individually allocated - if (build_info.tracked_parts) { + if (options.has_bom_items) { // Add a button to allocate stock against this build output html += makeIconButton( @@ -342,7 +342,9 @@ function unallocateStock(build_id, options={}) { }, title: '{% trans "Unallocate Stock Items" %}', onSuccess: function(response, opts) { - if (options.table) { + if (options.onSuccess) { + options.onSuccess(response, opts); + } else if (options.table) { // Reload the parent table $(options.table).bootstrapTable('refresh'); } @@ -427,6 +429,8 @@ function completeBuildOutputs(build_id, outputs, options={}) { fields: { status: {}, location: {}, + notes: {}, + accept_incomplete_allocation: {}, }, confirm: true, title: '{% trans "Complete Build Outputs" %}', @@ -445,6 +449,8 @@ function completeBuildOutputs(build_id, outputs, options={}) { outputs: [], status: getFormFieldValue('status', {}, opts), location: getFormFieldValue('location', {}, opts), + notes: getFormFieldValue('notes', {}, opts), + accept_incomplete_allocation: getFormFieldValue('accept_incomplete_allocation', {type: 'boolean'}, opts), }; var output_pk_values = []; @@ -720,6 +726,35 @@ function loadBuildOrderAllocationTable(table, options={}) { } +/* Internal helper functions for performing calculations on BOM data */ + +// Iterate through a list of allocations, returning *only* those which match a particular BOM row +function getAllocationsForBomRow(bom_row, allocations) { + var part_id = bom_row.sub_part; + + var matching_allocations = []; + + allocations.forEach(function(allocation) { + if (allocation.bom_part == part_id) { + matching_allocations.push(allocation); + } + }); + + return matching_allocations; +} + +// Sum the allocation quantity for a given BOM row +function sumAllocationsForBomRow(bom_row, allocations) { + var quantity = 0; + + getAllocationsForBomRow(bom_row, allocations).forEach(function(allocation) { + quantity += allocation.quantity; + }); + + return parseFloat(quantity).toFixed(15); +} + + /* * Display a "build output" table for a particular build. * @@ -737,18 +772,6 @@ function loadBuildOutputTable(build_info, options={}) { params.is_building = true; params.build = build_info.pk; - // Construct a list of "tracked" BOM items - var tracked_bom_items = []; - - var has_tracked_items = false; - - build_info.bom_items.forEach(function(bom_item) { - if (bom_item.sub_part_detail.trackable) { - tracked_bom_items.push(bom_item); - has_tracked_items = true; - }; - }); - var filters = {}; for (var key in params) { @@ -786,7 +809,7 @@ function loadBuildOutputTable(build_info, options={}) { } ); } else { - console.log(`WARNING: Could not locate sub-table for output ${pk}`); + console.warn(`Could not locate sub-table for output ${pk}`); } }); @@ -841,6 +864,26 @@ function loadBuildOutputTable(build_info, options={}) { }); } + // List of "tracked bom items" required for this build order + var bom_items = null; + + // Request list of BOM data for this build order + inventreeGet( + '{% url "api-bom-list" %}', + { + part: build_info.part, + sub_part_detail: true, + sub_part_trackable: true, + }, + { + async: false, + success: function(response) { + // Save the BOM items + bom_items = response; + } + } + ); + /* * Construct a "sub table" showing the required BOM items */ @@ -855,6 +898,9 @@ function loadBuildOutputTable(build_info, options={}) { element.html(html); + // Pass through the cached BOM items + build_info.bom_items = bom_items; + loadBuildOutputAllocationTable( build_info, row, @@ -865,19 +911,180 @@ function loadBuildOutputTable(build_info, options={}) { ); } + function updateAllocationData(rows) { + // Update stock allocation information for the build outputs + + // Request updated stock allocation data for this build order + inventreeGet( + '{% url "api-build-item-list" %}', + { + build: build_info.pk, + part_detail: true, + location_detail: true, + sub_part_trackable: true, + tracked: true, + }, + { + success: function(response) { + + // Group allocation information by the "install_into" field + var allocations = {}; + + response.forEach(function(allocation) { + var target = allocation.install_into; + + if (target != null) { + if (!(target in allocations)) { + allocations[target] = []; + } + + allocations[target].push(allocation); + } + }); + + // Now that the allocations have been grouped by stock item, + // we can update each row in the table, + // using the pk value of each row (stock item) + rows.forEach(function(row) { + row.allocations = allocations[row.pk] || []; + $(table).bootstrapTable('updateByUniqueId', row.pk, row, true); + + var n_completed_lines = 0; + + // Check how many BOM lines have been completely allocated for this build output + bom_items.forEach(function(bom_item) { + + var required_quantity = bom_item.quantity * row.quantity; + + if (sumAllocationsForBomRow(bom_item, row.allocations) >= required_quantity) { + n_completed_lines += 1; + } + + var output_progress_bar = $(`#output-progress-${row.pk}`); + + if (output_progress_bar.exists()) { + output_progress_bar.html( + makeProgressBar( + n_completed_lines, + bom_items.length, + { + max_width: '150px', + } + ) + ); + } + }); + }); + } + } + ); + } + + var part_tests = null; + + function updateTestResultData(rows) { + // Update test result information for the build outputs + + // Request test template data if it has not already been retrieved + if (part_tests == null) { + inventreeGet( + '{% url "api-part-test-template-list" %}', + { + part: build_info.part, + required: true, + }, + { + success: function(response) { + // Save the list of part tests + part_tests = response; + + // Callback to this function again + updateTestResultData(rows); + } + } + ); + + return; + } + + // Retrieve stock results for the entire build + inventreeGet( + '{% url "api-stock-test-result-list" %}', + { + build: build_info.pk, + }, + { + success: function(results) { + + // Iterate through each row and find matching test results + rows.forEach(function(row) { + var test_results = {}; + + results.forEach(function(result) { + if (result.stock_item == row.pk) { + // This test result matches the particular stock item + + if (!(result.key in test_results)) { + test_results[result.key] = result.result; + } + } + }); + + row.passed_tests = test_results; + + $(table).bootstrapTable('updateByUniqueId', row.pk, row, true); + }); + } + } + ); + } + + // Return the number of 'passed' tests in a given row + function countPassedTests(row) { + if (part_tests == null) { + return 0; + } + + var results = row.passed_tests || {}; + var n = 0; + + part_tests.forEach(function(test) { + if (results[test.key] || false) { + n += 1; + } + }); + + return n; + } + + // Return the number of 'fully allocated' lines for a given row + function countAllocatedLines(row) { + var n_completed_lines = 0; + + bom_items.forEach(function(bom_row) { + var required_quantity = bom_row.quantity * row.quantity; + + if (sumAllocationsForBomRow(bom_row, row.allocations || []) >= required_quantity) { + n_completed_lines += 1; + } + }); + + return n_completed_lines; + } + $(table).inventreeTable({ url: '{% url "api-stock-list" %}', queryParams: filters, original: params, - showColumns: false, + showColumns: true, uniqueId: 'pk', name: 'build-outputs', sortable: true, search: false, - sidePagination: 'server', - detailView: has_tracked_items, + sidePagination: 'client', + detailView: bom_items.length > 0, detailFilter: function(index, row) { - return true; + return bom_items.length > 0; }, detailFormatter: function(index, row, element) { constructBuildOutputSubTable(index, row, element); @@ -885,11 +1092,14 @@ function loadBuildOutputTable(build_info, options={}) { formatNoMatches: function() { return '{% trans "No active build outputs found" %}'; }, - onPostBody: function() { + onPostBody: function(rows) { // Add callbacks for the buttons setupBuildOutputButtonCallbacks(); + }, + onLoadSuccess: function(rows) { - $(table).bootstrapTable('expandAllRows'); + updateAllocationData(rows); + updateTestResultData(rows); }, columns: [ { @@ -901,6 +1111,7 @@ function loadBuildOutputTable(build_info, options={}) { { field: 'part', title: '{% trans "Part" %}', + switchable: true, formatter: function(value, row) { var thumb = row.part_detail.thumbnail; @@ -909,7 +1120,9 @@ function loadBuildOutputTable(build_info, options={}) { }, { field: 'quantity', - title: '{% trans "Quantity" %}', + title: '{% trans "Build Output" %}', + switchable: false, + sortable: true, formatter: function(value, row) { var url = `/stock/item/${row.pk}/`; @@ -922,15 +1135,84 @@ function loadBuildOutputTable(build_info, options={}) { text = `{% trans "Quantity" %}: ${row.quantity}`; } + if (row.batch) { + text += ` ({% trans "Batch" %}: ${row.batch})`; + } + return renderLink(text, url); + }, + sorter: function(a, b, row_a, row_b) { + // Sort first by quantity, and then by serial number + if ((row_a.quantity > 1) || (row_b.quantity > 1)) { + return row_a.quantity > row_b.quantity ? 1 : -1; + } + + if ((row_a.serial != null) && (row_b.serial != null)) { + var sn_a = Number.parseInt(row_a.serial) || 0; + var sn_b = Number.parseInt(row_b.serial) || 0; + + return sn_a > sn_b ? 1 : -1; + } + + return 0; } }, { field: 'allocated', - title: '{% trans "Allocated Parts" %}', - visible: has_tracked_items, + title: '{% trans "Allocated Stock" %}', + visible: bom_items.length > 0, + switchable: false, + sortable: true, formatter: function(value, row) { - return `
`; + + if (bom_items.length == 0) { + return `
{% trans "No tracked BOM items for this build" %}
`; + } + + var progressBar = makeProgressBar( + countAllocatedLines(row), + bom_items.length, + { + max_width: '150px', + } + ); + + return `
${progressBar}
`; + }, + sorter: function(value_a, value_b, row_a, row_b) { + var q_a = countAllocatedLines(row_a); + var q_b = countAllocatedLines(row_b); + + return q_a > q_b ? 1 : -1; + }, + }, + { + field: 'tests', + title: '{% trans "Completed Tests" %}', + sortable: true, + switchable: true, + formatter: function(value, row) { + if (part_tests == null || part_tests.length == 0) { + return `{% trans "No required tests for this build" %}`; + } + + var n_passed = countPassedTests(row); + + var progress = makeProgressBar( + n_passed, + part_tests.length, + { + max_width: '150px', + } + ); + + return progress; + }, + sorter: function(a, b, row_a, row_b) { + var n_a = countPassedTests(row_a); + var n_b = countPassedTests(row_b); + + return n_a > n_b ? 1 : -1; } }, { @@ -941,6 +1223,9 @@ function loadBuildOutputTable(build_info, options={}) { return makeBuildOutputButtons( row.pk, build_info, + { + has_bom_items: bom_items.length > 0, + } ); } } @@ -956,6 +1241,79 @@ function loadBuildOutputTable(build_info, options={}) { $(table).on('collapse-row.bs.table', function(detail, index, row) { $(`#button-output-allocate-${row.pk}`).prop('disabled', true); }); + + // Add callbacks for the various table menubar buttons + + // Complete multiple outputs + $('#multi-output-complete').click(function() { + var outputs = $(table).bootstrapTable('getSelections'); + + if (outputs.length == 0) { + outputs = $(table).bootstrapTable('getData'); + } + + completeBuildOutputs( + build_info.pk, + outputs, + { + success: function() { + // Reload the "in progress" table + $('#build-output-table').bootstrapTable('refresh'); + + // Reload the "completed" table + $('#build-stock-table').bootstrapTable('refresh'); + } + } + ); + }); + + // Delete multiple build outputs + $('#multi-output-delete').click(function() { + var outputs = $(table).bootstrapTable('getSelections'); + + if (outputs.length == 0) { + outputs = $(table).bootstrapTable('getData'); + } + + deleteBuildOutputs( + build_info.pk, + outputs, + { + success: function() { + // Reload the "in progress" table + $('#build-output-table').bootstrapTable('refresh'); + + // Reload the "completed" table + $('#build-stock-table').bootstrapTable('refresh'); + } + } + ); + }); + + // Print stock item labels + $('#incomplete-output-print-label').click(function() { + var outputs = $(table).bootstrapTable('getSelections'); + + if (outputs.length == 0) { + outputs = $(table).bootstrapTable('getData'); + } + + var stock_id_values = []; + + outputs.forEach(function(output) { + stock_id_values.push(output.pk); + }); + + printStockItemLabels(stock_id_values); + }); + + $('#outputs-expand').click(function() { + $(table).bootstrapTable('expandAllRows'); + }); + + $('#outputs-collapse').click(function() { + $(table).bootstrapTable('collapseAllRows'); + }); } @@ -973,7 +1331,6 @@ function loadBuildOutputTable(build_info, options={}) { */ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { - var buildId = buildInfo.pk; var partId = buildInfo.part; @@ -985,6 +1342,26 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { outputId = 'untracked'; } + var bom_items = buildInfo.bom_items || null; + + // If BOM items have not been provided, load via the API + if (bom_items == null) { + inventreeGet( + '{% url "api-bom-list" %}', + { + part: partId, + sub_part_detail: true, + sub_part_trackable: buildInfo.tracked_parts, + }, + { + async: false, + success: function(results) { + bom_items = results; + } + } + ); + } + var table = options.table; if (options.table == null) { @@ -1002,13 +1379,72 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { setupFilterList('builditems', $(table), options.filterTarget); - // If an "output" is specified, then only "trackable" parts are allocated - // Otherwise, only "untrackable" parts are allowed - var trackable = ! !output; + var allocated_items = output == null ? null : output.allocations; - function reloadTable() { - // Reload the entire build allocation table - $(table).bootstrapTable('refresh'); + function redrawAllocationData() { + // Force a refresh of each row in the table + // Note we cannot call 'refresh' because we are passing data from memory + // var rows = $(table).bootstrapTable('getData'); + + // How many rows are fully allocated? + var allocated_rows = 0; + + bom_items.forEach(function(row) { + $(table).bootstrapTable('updateByUniqueId', row.pk, row, true); + + if (isRowFullyAllocated(row)) { + allocated_rows += 1; + } + }); + + // Find the top-level progess bar for this build output + var output_progress_bar = $(`#output-progress-${outputId}`); + + if (output_progress_bar.exists()) { + if (bom_items.length > 0) { + output_progress_bar.html( + makeProgressBar( + allocated_rows, + bom_items.length, + { + max_width: '150px', + } + ) + ); + } + } else { + console.warn(`Could not find progress bar for output '${outputId}'`); + } + } + + function reloadAllocationData(async=true) { + // Reload stock allocation data for this particular build output + + inventreeGet( + '{% url "api-build-item-list" %}', + { + build: buildId, + part_detail: true, + location_detail: true, + output: output == null ? null : output.pk, + }, + { + async: async, + success: function(response) { + allocated_items = response; + + redrawAllocationData(); + + } + } + ); + } + + if (allocated_items == null) { + // No allocation data provided? Request from server (blocking) + reloadAllocationData(false); + } else { + redrawAllocationData(); } function requiredQuantity(row) { @@ -1032,6 +1468,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { } function availableQuantity(row) { + // Return the total available stock for a given row // Base stock var available = row.available_stock; @@ -1045,27 +1482,17 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { } return available; - } - function sumAllocations(row) { - // Calculat total allocations for a given row - if (!row.allocations) { - row.allocated = 0; - return 0; - } - - var quantity = 0; - - row.allocations.forEach(function(item) { - quantity += item.quantity; - }); - - row.allocated = parseFloat(quantity.toFixed(15)); - + function allocatedQuantity(row) { + row.allocated = sumAllocationsForBomRow(row, allocated_items); return row.allocated; } + function isRowFullyAllocated(row) { + return allocatedQuantity(row) >= requiredQuantity(row); + } + function setupCallbacks() { // Register button callbacks once table data are loaded @@ -1079,7 +1506,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { var row = $(table).bootstrapTable('getRowByUniqueId', pk); if (!row) { - console.log('WARNING: getRowByUniqueId returned null'); + console.warn('getRowByUniqueId returned null'); return; } @@ -1092,7 +1519,8 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { { source_location: buildInfo.source_location, success: function(data) { - $(table).bootstrapTable('refresh'); + // $(table).bootstrapTable('refresh'); + reloadAllocationData(); }, output: output == null ? null : output.pk, } @@ -1124,7 +1552,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { newBuildOrder({ part: pk, parent: buildId, - quantity: requiredQuantity(row) - sumAllocations(row), + quantity: requiredQuantity(row) - allocatedQuantity(row), }); }); @@ -1139,18 +1567,16 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { bom_item: row.pk, output: outputId == 'untracked' ? null : outputId, table: table, + onSuccess: function(response, opts) { + reloadAllocationData(); + } }); }); } // Load table of BOM items $(table).inventreeTable({ - url: '{% url "api-bom-list" %}', - queryParams: { - part: partId, - sub_part_detail: true, - sub_part_trackable: trackable, - }, + data: bom_items, disablePagination: true, formatNoMatches: function() { return '{% trans "No BOM items found" %}'; @@ -1162,124 +1588,11 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { // Setup button callbacks setupCallbacks(); }, - onLoadSuccess: function(tableData) { - // Once the BOM data are loaded, request allocation data for this build output - - var params = { - build: buildId, - part_detail: true, - location_detail: true, - }; - - if (output) { - params.sub_part_trackable = true; - params.output = outputId; - } else { - params.sub_part_trackable = false; - } - - inventreeGet('/api/build/item/', - params, - { - success: function(data) { - // Iterate through the returned data, and group by the part they point to - var allocations = {}; - - // Total number of line items - var totalLines = tableData.length; - - // Total number of "completely allocated" lines - var allocatedLines = 0; - - data.forEach(function(item) { - - // Group BuildItem objects by part - var part = item.bom_part || item.part; - var key = parseInt(part); - - if (!(key in allocations)) { - allocations[key] = []; - } - - allocations[key].push(item); - }); - - // Now update the allocations for each row in the table - for (var key in allocations) { - - // Select the associated row in the table - var tableRow = $(table).bootstrapTable('getRowByUniqueId', key); - - if (!tableRow) { - continue; - } - - // Set the allocation list for that row - tableRow.allocations = allocations[key]; - - // Calculate the total allocated quantity - var allocatedQuantity = sumAllocations(tableRow); - - var requiredQuantity = 0; - - if (output) { - requiredQuantity = tableRow.quantity * output.quantity; - } else { - requiredQuantity = tableRow.quantity * buildInfo.quantity; - } - - // Is this line item fully allocated? - if (allocatedQuantity >= requiredQuantity) { - allocatedLines += 1; - } - - // Push the updated row back into the main table - $(table).bootstrapTable('updateByUniqueId', key, tableRow, true); - } - - // Update any rows which we did not receive allocation information for - var td = $(table).bootstrapTable('getData'); - - td.forEach(function(tableRow) { - if (tableRow.allocations == null) { - - tableRow.allocations = []; - - $(table).bootstrapTable('updateByUniqueId', tableRow.pk, tableRow, true); - } - }); - - // Update the progress bar for this build output - var build_progress = $(`#output-progress-${outputId}`); - - if (build_progress.exists()) { - if (totalLines > 0) { - - var progress = makeProgressBar( - allocatedLines, - totalLines, - { - max_width: '150px', - } - ); - - build_progress.html(progress); - } else { - build_progress.html(''); - } - - } else { - console.log(`WARNING: Could not find progress bar for output ${outputId}`); - } - } - } - ); - }, sortable: true, showColumns: false, detailView: true, detailFilter: function(index, row) { - return row.allocations != null; + return allocatedQuantity(row) > 0; }, detailFormatter: function(index, row, element) { // Contruct an 'inner table' which shows which stock items have been allocated @@ -1293,7 +1606,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { var subTable = $(`#${subTableId}`); subTable.bootstrapTable({ - data: row.allocations, + data: getAllocationsForBomRow(row, allocated_items), showHeader: true, columns: [ { @@ -1315,7 +1628,6 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { var url = ''; - var serial = row.serial; if (row.stock_item_detail) { @@ -1383,7 +1695,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { quantity: {}, }, title: '{% trans "Edit Allocation" %}', - onSuccess: reloadTable, + onSuccess: reloadAllocationData, }); }); @@ -1393,7 +1705,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { constructForm(`/api/build/item/${pk}/`, { method: 'DELETE', title: '{% trans "Remove Allocation" %}', - onSuccess: reloadTable, + onSuccess: reloadAllocationData, }); }); }, @@ -1494,25 +1806,15 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { title: '{% trans "Allocated" %}', sortable: true, formatter: function(value, row) { - var allocated = 0; - - if (row.allocations != null) { - row.allocations.forEach(function(item) { - allocated += item.quantity; - }); - - var required = requiredQuantity(row); - - return makeProgressBar(allocated, required); - } else { - return `{% trans "loading" %}...`; - } + var allocated = allocatedQuantity(row); + var required = requiredQuantity(row); + return makeProgressBar(allocated, required); }, sorter: function(valA, valB, rowA, rowB) { // Custom sorting function for progress bars - var aA = sumAllocations(rowA); - var aB = sumAllocations(rowB); + var aA = allocatedQuantity(rowA); + var aB = allocatedQuantity(rowB); var qA = requiredQuantity(rowA); var qB = requiredQuantity(rowB); @@ -1532,12 +1834,12 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { // Handle the case where both ratios are equal if (progressA == progressB) { - return (qA < qB) ? 1 : -1; + return (qA > qB) ? 1 : -1; } if (progressA == progressB) return 0; - return (progressA < progressB) ? 1 : -1; + return (progressA > progressB) ? 1 : -1; } }, { @@ -1547,7 +1849,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { // Generate action buttons for this build output var html = `
`; - if (sumAllocations(row) < requiredQuantity(row)) { + if (allocatedQuantity(row) < requiredQuantity(row)) { if (row.sub_part_detail.assembly) { html += makeIconButton('fa-tools icon-blue', 'button-build', row.sub_part, '{% trans "Build stock" %}'); } @@ -1563,7 +1865,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { 'fa-minus-circle icon-red', 'button-unallocate', row.sub_part, '{% trans "Unallocate stock" %}', { - disabled: row.allocations == null + disabled: allocatedQuantity(row) == 0, } ); @@ -1672,7 +1974,7 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { // var stock_input = constructRelatedFieldInput(`items_stock_item_${pk}`); var html = ` - + ${thumb} ${sub_part.full_name} @@ -1762,8 +2064,6 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { method: 'POST', fields: {}, preFormContent: html, - confirm: true, - confirmMessage: '{% trans "Confirm stock allocation" %}', title: '{% trans "Allocate Stock Items to Build Order" %}', afterRender: function(fields, options) { @@ -1859,7 +2159,7 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { $(options.modal).find('.button-row-remove').click(function() { var pk = $(this).attr('pk'); - $(options.modal).find(`#allocation_row_${pk}`).remove(); + $(options.modal).find(`#items_${pk}`).remove(); }); }, onSubmit: function(fields, opts) { @@ -1974,7 +2274,9 @@ function autoAllocateStockToBuild(build_id, bom_items=[], options={}) { confirm: true, preFormContent: html, onSuccess: function(response) { - $('#allocation-table-untracked').bootstrapTable('refresh'); + if (options.onSuccess) { + options.onSuccess(response); + } } }); } @@ -2072,8 +2374,8 @@ function loadBuildTable(table, options) { } }, { - field: 'quantity', - title: '{% trans "Completed" %}', + field: 'completed', + title: '{% trans "Progress" %}', sortable: true, formatter: function(value, row) { return makeProgressBar( diff --git a/InvenTree/templates/js/translated/helpers.js b/InvenTree/templates/js/translated/helpers.js index c464ad3645..dc40d1e30c 100644 --- a/InvenTree/templates/js/translated/helpers.js +++ b/InvenTree/templates/js/translated/helpers.js @@ -163,27 +163,29 @@ function makeProgressBar(value, maximum, opts={}) { var style = options.style || ''; - var text = ''; + var text = options.text; + + if (!text) { + if (style == 'percent') { + // Display e.g. "50%" - if (style == 'percent') { - // Display e.g. "50%" + text = `${percent}%`; + } else if (style == 'max') { + // Display just the maximum value + text = `${maximum}`; + } else if (style == 'value') { + // Display just the current value + text = `${value}`; + } else if (style == 'blank') { + // No display! + text = ''; + } else { + /* Default style + * Display e.g. "5 / 10" + */ - text = `${percent}%`; - } else if (style == 'max') { - // Display just the maximum value - text = `${maximum}`; - } else if (style == 'value') { - // Display just the current value - text = `${value}`; - } else if (style == 'blank') { - // No display! - text = ''; - } else { - /* Default style - * Display e.g. "5 / 10" - */ - - text = `${value} / ${maximum}`; + text = `${value} / ${maximum}`; + } } var id = options.id || 'progress-bar'; diff --git a/InvenTree/templates/js/translated/model_renderers.js b/InvenTree/templates/js/translated/model_renderers.js index c921c83bea..8fd6a6b3f4 100644 --- a/InvenTree/templates/js/translated/model_renderers.js +++ b/InvenTree/templates/js/translated/model_renderers.js @@ -113,8 +113,6 @@ function renderStockItem(name, data, parameters={}, options={}) { } } - - var html = ` ${part_detail} @@ -162,12 +160,10 @@ function renderBuild(name, data, parameters={}, options={}) { var html = select2Thumbnail(image); - html += `${data.reference} - ${data.quantity} x ${data.part_detail.full_name}`; + html += `${data.reference} - ${data.quantity} x ${data.part_detail.full_name}`; html += renderId('{% trans "Build ID" %}', data.pk, parameters); - html += `

${data.title}

`; - return html; } @@ -302,8 +298,9 @@ function renderSalesOrderShipment(name, data, parameters={}, options={}) { var so_prefix = global_settings.SALESORDER_REFERENCE_PREFIX; var html = ` - - ${so_prefix}${data.order_detail.reference} - {% trans "Shipment" %} ${data.reference} + ${so_prefix}${data.order_detail.reference} - {% trans "Shipment" %} ${data.reference} + + {% trans "Shipment ID" %}: ${data.pk} `; @@ -406,5 +403,4 @@ function renderSupplierPart(name, data, parameters={}, options={}) { html += renderId('{% trans "Supplier Part ID" %}', data.pk, parameters); return html; - } diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 723b462adb..16b5b1f00d 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -26,9 +26,11 @@ editPurchaseOrderLineItem, exportOrder, loadPurchaseOrderLineItemTable, + loadPurchaseOrderExtraLineTable loadPurchaseOrderTable, loadSalesOrderAllocationTable, loadSalesOrderLineItemTable, + loadSalesOrderExtraLineTable loadSalesOrderShipmentTable, loadSalesOrderTable, newPurchaseOrderFromOrderWizard, @@ -36,6 +38,8 @@ orderParts, removeOrderRowFromOrderWizard, removePurchaseOrderLineItem, + loadOrderTotal, + extraLineFields, */ @@ -273,7 +277,7 @@ function createPurchaseOrder(options={}) { if (options.onSuccess) { options.onSuccess(data); } else { - // Default action is to redirect browser to the new PO + // Default action is to redirect browser to the new PurchaseOrder location.href = `/order/purchase-order/${data.pk}/`; } }, @@ -306,6 +310,28 @@ function soLineItemFields(options={}) { } +/* Construct a set of fields for a OrderExtraLine form */ +function extraLineFields(options={}) { + + var fields = { + order: { + hidden: true, + }, + quantity: {}, + reference: {}, + price: {}, + price_currency: {}, + notes: {}, + }; + + if (options.order) { + fields.order.value = options.order; + } + + return fields; +} + + /* Construct a set of fields for the PurchaseOrderLineItem form */ function poLineItemFields(options={}) { @@ -758,7 +784,7 @@ function newPurchaseOrderFromOrderWizard(e) { /** * Receive stock items against a PurchaseOrder - * Uses the POReceive API endpoint + * Uses the PurchaseOrderReceive API endpoint * * arguments: * - order_id, ID / PK for the PurchaseOrder instance @@ -1631,6 +1657,226 @@ function loadPurchaseOrderLineItemTable(table, options={}) { } +/** + * Load a table displaying lines for a particular PurchaseOrder + * + * @param {String} table : HTML ID tag e.g. '#table' + * @param {Object} options : object which contains: + * - order {integer} : pk of the PurchaseOrder + * - status: {integer} : status code for the order + */ +function loadPurchaseOrderExtraLineTable(table, options={}) { + + options.table = table; + + options.params = options.params || {}; + + if (!options.order) { + console.log('ERROR: function called without order ID'); + return; + } + + if (!options.status) { + console.log('ERROR: function called without order status'); + return; + } + + options.params.order = options.order; + options.params.part_detail = true; + options.params.allocations = true; + + var filters = loadTableFilters('purchaseorderextraline'); + + for (var key in options.params) { + filters[key] = options.params[key]; + } + + options.url = options.url || '{% url "api-po-extra-line-list" %}'; + + var filter_target = options.filter_target || '#filter-list-purchase-order-extra-lines'; + + setupFilterList('purchaseorderextraline', $(table), filter_target); + + // Is the order pending? + var pending = options.status == {{ SalesOrderStatus.PENDING }}; + + // Table columns to display + var columns = [ + { + sortable: true, + field: 'reference', + title: '{% trans "Reference" %}', + switchable: true, + }, + { + sortable: true, + field: 'quantity', + title: '{% trans "Quantity" %}', + footerFormatter: function(data) { + return data.map(function(row) { + return +row['quantity']; + }).reduce(function(sum, i) { + return sum + i; + }, 0); + }, + switchable: false, + }, + { + sortable: true, + field: 'price', + title: '{% trans "Unit Price" %}', + formatter: function(value, row) { + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: row.price_currency + } + ); + + return formatter.format(row.price); + } + }, + { + field: 'total_price', + sortable: true, + title: '{% trans "Total Price" %}', + formatter: function(value, row) { + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: row.price_currency + } + ); + + return formatter.format(row.price * row.quantity); + }, + footerFormatter: function(data) { + var total = data.map(function(row) { + return +row['price'] * row['quantity']; + }).reduce(function(sum, i) { + return sum + i; + }, 0); + + var currency = (data.slice(-1)[0] && data.slice(-1)[0].price_currency) || 'USD'; + + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: currency + } + ); + + return formatter.format(total); + } + } + ]; + + columns.push({ + field: 'notes', + title: '{% trans "Notes" %}', + }); + + if (pending) { + columns.push({ + field: 'buttons', + switchable: false, + formatter: function(value, row, index, field) { + + var html = `
`; + + var pk = row.pk; + + html += makeIconButton('fa-clone', 'button-duplicate', pk, '{% trans "Duplicate line" %}'); + html += makeIconButton('fa-edit icon-blue', 'button-edit', pk, '{% trans "Edit line" %}'); + html += makeIconButton('fa-trash-alt icon-red', 'button-delete', pk, '{% trans "Delete line" %}', ); + + html += `
`; + + return html; + } + }); + } + + function reloadTable() { + $(table).bootstrapTable('refresh'); + reloadTotal(); + } + + // Configure callback functions once the table is loaded + function setupCallbacks() { + + // Callback for duplicating lines + $(table).find('.button-duplicate').click(function() { + var pk = $(this).attr('pk'); + + inventreeGet(`/api/order/po-extra-line/${pk}/`, {}, { + success: function(data) { + + var fields = extraLineFields(); + + constructForm('{% url "api-po-extra-line-list" %}', { + method: 'POST', + fields: fields, + data: data, + title: '{% trans "Duplicate Line" %}', + onSuccess: function(response) { + $(table).bootstrapTable('refresh'); + } + }); + } + }); + }); + + // Callback for editing lines + $(table).find('.button-edit').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/po-extra-line/${pk}/`, { + fields: { + quantity: {}, + reference: {}, + price: {}, + price_currency: {}, + notes: {}, + }, + title: '{% trans "Edit Line" %}', + onSuccess: reloadTable, + }); + }); + + // Callback for deleting lines + $(table).find('.button-delete').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/po-extra-line/${pk}/`, { + method: 'DELETE', + title: '{% trans "Delete Line" %}', + onSuccess: reloadTable, + }); + }); + } + + $(table).inventreeTable({ + onPostBody: setupCallbacks, + name: 'purchaseorderextraline', + sidePagination: 'client', + formatNoMatches: function() { + return '{% trans "No matching line" %}'; + }, + queryParams: filters, + original: options.params, + url: options.url, + showFooter: true, + uniqueId: 'pk', + detailViewByClick: false, + columns: columns, + }); +} + + /* * Load table displaying list of sales orders */ @@ -2425,7 +2671,7 @@ function showAllocationSubTable(index, row, element, options) { }, { field: 'buttons', - title: '{% trans "" %}', + title: '', formatter: function(value, row, index, field) { var html = `
`; @@ -2517,6 +2763,26 @@ function showFulfilledSubTable(index, row, element, options) { }); } +var TotalPriceRef = ''; // reference to total price field +var TotalPriceOptions = {}; // options to reload the price + +function loadOrderTotal(reference, options={}) { + TotalPriceRef = reference; + TotalPriceOptions = options; +} + +function reloadTotal() { + inventreeGet( + TotalPriceOptions.url, + {}, + { + success: function(data) { + $(TotalPriceRef).html(data.total_price_string); + } + } + ); +}; + /** * Load a table displaying line items for a particular SalesOrder @@ -2814,6 +3080,7 @@ function loadSalesOrderLineItemTable(table, options={}) { function reloadTable() { $(table).bootstrapTable('refresh'); + reloadTotal(); } // Configure callback functions once the table is loaded @@ -3023,3 +3290,223 @@ function loadSalesOrderLineItemTable(table, options={}) { columns: columns, }); } + + +/** + * Load a table displaying lines for a particular SalesOrder + * + * @param {String} table : HTML ID tag e.g. '#table' + * @param {Object} options : object which contains: + * - order {integer} : pk of the SalesOrder + * - status: {integer} : status code for the order + */ +function loadSalesOrderExtraLineTable(table, options={}) { + + options.table = table; + + options.params = options.params || {}; + + if (!options.order) { + console.log('ERROR: function called without order ID'); + return; + } + + if (!options.status) { + console.log('ERROR: function called without order status'); + return; + } + + options.params.order = options.order; + options.params.part_detail = true; + options.params.allocations = true; + + var filters = loadTableFilters('salesorderextraline'); + + for (var key in options.params) { + filters[key] = options.params[key]; + } + + options.url = options.url || '{% url "api-so-extra-line-list" %}'; + + var filter_target = options.filter_target || '#filter-list-sales-order-extra-lines'; + + setupFilterList('salesorderextraline', $(table), filter_target); + + // Is the order pending? + var pending = options.status == {{ SalesOrderStatus.PENDING }}; + + // Table columns to display + var columns = [ + { + sortable: true, + field: 'reference', + title: '{% trans "Reference" %}', + switchable: true, + }, + { + sortable: true, + field: 'quantity', + title: '{% trans "Quantity" %}', + footerFormatter: function(data) { + return data.map(function(row) { + return +row['quantity']; + }).reduce(function(sum, i) { + return sum + i; + }, 0); + }, + switchable: false, + }, + { + sortable: true, + field: 'price', + title: '{% trans "Unit Price" %}', + formatter: function(value, row) { + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: row.price_currency + } + ); + + return formatter.format(row.price); + } + }, + { + field: 'total_price', + sortable: true, + title: '{% trans "Total Price" %}', + formatter: function(value, row) { + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: row.price_currency + } + ); + + return formatter.format(row.price * row.quantity); + }, + footerFormatter: function(data) { + var total = data.map(function(row) { + return +row['price'] * row['quantity']; + }).reduce(function(sum, i) { + return sum + i; + }, 0); + + var currency = (data.slice(-1)[0] && data.slice(-1)[0].price_currency) || 'USD'; + + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: currency + } + ); + + return formatter.format(total); + } + } + ]; + + columns.push({ + field: 'notes', + title: '{% trans "Notes" %}', + }); + + if (pending) { + columns.push({ + field: 'buttons', + switchable: false, + formatter: function(value, row, index, field) { + + var html = `
`; + + var pk = row.pk; + + html += makeIconButton('fa-clone', 'button-duplicate', pk, '{% trans "Duplicate line" %}'); + html += makeIconButton('fa-edit icon-blue', 'button-edit', pk, '{% trans "Edit line" %}'); + html += makeIconButton('fa-trash-alt icon-red', 'button-delete', pk, '{% trans "Delete line" %}', ); + + html += `
`; + + return html; + } + }); + } + + function reloadTable() { + $(table).bootstrapTable('refresh'); + reloadTotal(); + } + + // Configure callback functions once the table is loaded + function setupCallbacks() { + + // Callback for duplicating lines + $(table).find('.button-duplicate').click(function() { + var pk = $(this).attr('pk'); + + inventreeGet(`/api/order/so-extra-line/${pk}/`, {}, { + success: function(data) { + + var fields = extraLineFields(); + + constructForm('{% url "api-so-extra-line-list" %}', { + method: 'POST', + fields: fields, + data: data, + title: '{% trans "Duplicate Line" %}', + onSuccess: function(response) { + $(table).bootstrapTable('refresh'); + } + }); + } + }); + }); + + // Callback for editing lines + $(table).find('.button-edit').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/so-extra-line/${pk}/`, { + fields: { + quantity: {}, + reference: {}, + price: {}, + price_currency: {}, + notes: {}, + }, + title: '{% trans "Edit Line" %}', + onSuccess: reloadTable, + }); + }); + + // Callback for deleting lines + $(table).find('.button-delete').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/so-extra-line/${pk}/`, { + method: 'DELETE', + title: '{% trans "Delete Line" %}', + onSuccess: reloadTable, + }); + }); + } + + $(table).inventreeTable({ + onPostBody: setupCallbacks, + name: 'salesorderextraline', + sidePagination: 'client', + formatNoMatches: function() { + return '{% trans "No matching lines" %}'; + }, + queryParams: filters, + original: options.params, + url: options.url, + showFooter: true, + uniqueId: 'pk', + detailViewByClick: false, + columns: columns, + }); +} diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index 3aa3b936cf..29ac95f149 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -500,6 +500,11 @@ function duplicateBom(part_id, options={}) { */ function partStockLabel(part, options={}) { + // Prevent literal string 'null' from being displayed + if (part.units == null) { + part.units = ''; + } + if (part.in_stock) { // There IS stock available for this part diff --git a/InvenTree/templates/js/translated/report.js b/InvenTree/templates/js/translated/report.js index 4f887f2275..49afbcb7ea 100644 --- a/InvenTree/templates/js/translated/report.js +++ b/InvenTree/templates/js/translated/report.js @@ -271,7 +271,7 @@ function printBomReports(parts) { function printPurchaseOrderReports(orders) { /** - * Print PO reports for the provided purchase order(s) + * Print PurchaseOrder reports for the provided purchase order(s) */ if (orders.length == 0) { @@ -325,7 +325,7 @@ function printPurchaseOrderReports(orders) { function printSalesOrderReports(orders) { /** - * Print SO reports for the provided purchase order(s) + * Print SalesOrder reports for the provided purchase order(s) */ if (orders.length == 0) { diff --git a/InvenTree/templates/navbar.html b/InvenTree/templates/navbar.html index d687300eb4..4660123e0d 100644 --- a/InvenTree/templates/navbar.html +++ b/InvenTree/templates/navbar.html @@ -6,12 +6,15 @@ {% settings_value 'BARCODE_ENABLE' as barcodes %} {% settings_value 'STICKY_HEADER' user=request.user as sticky %} {% navigation_enabled as plugin_nav %} -{% inventree_demo_mode as demo %} + +{% inventree_show_about user as show_about %} +{% inventree_customize 'navbar_message' as navbar_message %} +{% inventree_customize 'hide_admin_link' as hide_admin_link %}