diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml new file mode 100644 index 0000000000..7e32685af1 --- /dev/null +++ b/.github/workflows/python.yaml @@ -0,0 +1,49 @@ +# Run python library tests whenever code is pushed to master + +name: Python Bindings + +on: + push: + branches: + - master + + pull_request: + branches-ignore: + - l10* + +jobs: + + python: + runs-on: ubuntu-latest + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + INVENTREE_DB_NAME: './test_db.sqlite' + INVENTREE_DB_ENGINE: 'sqlite3' + INVENTREE_DEBUG: info + INVENTREE_MEDIA_ROOT: ./media + INVENTREE_STATIC_ROOT: ./static + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Install InvenTree + run: | + sudo apt-get update + sudo apt-get install python3-dev python3-pip python3-venv + pip3 install invoke + invoke install + invoke migrate + - name: Download Python Code + run: | + git clone --depth 1 https://github.com/inventree/inventree-python ./inventree-python + - name: Start Server + run: | + invoke import-records -f ./inventree-python/test/test_data.json + invoke server -a 127.0.0.1:8000 & + sleep 60 + - name: Run Tests + run: | + cd inventree-python + invoke test + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5dd3580ef6..c53a837e24 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,9 @@ local_settings.py *.backup *.old +# Files used for testing +dummy_image.* + # Sphinx files docs/_build diff --git a/InvenTree/InvenTree/api_tester.py b/InvenTree/InvenTree/api_tester.py index eb92bd80c1..a803e6797f 100644 --- a/InvenTree/InvenTree/api_tester.py +++ b/InvenTree/InvenTree/api_tester.py @@ -73,22 +73,50 @@ class InvenTreeAPITestCase(APITestCase): ruleset.save() break - def get(self, url, data={}, code=200): + def get(self, url, data={}, expected_code=200): """ Issue a GET request """ response = self.client.get(url, data, format='json') - self.assertEqual(response.status_code, code) + if expected_code is not None: + self.assertEqual(response.status_code, expected_code) return response - def post(self, url, data): + def post(self, url, data, expected_code=None): """ Issue a POST request """ response = self.client.post(url, data=data, format='json') + if expected_code is not None: + self.assertEqual(response.status_code, expected_code) + + return response + + def delete(self, url, expected_code=None): + """ + Issue a DELETE request + """ + + response = self.client.delete(url) + + if expected_code is not None: + self.assertEqual(response.status_code, expected_code) + + return response + + def patch(self, url, data, files=None, expected_code=None): + """ + Issue a PATCH request + """ + + response = self.client.patch(url, data=data, files=files, format='json') + + if expected_code is not None: + self.assertEqual(response.status_code, expected_code) + return response diff --git a/InvenTree/InvenTree/ready.py b/InvenTree/InvenTree/ready.py index 9e64a2e6c7..7d63861f4b 100644 --- a/InvenTree/InvenTree/ready.py +++ b/InvenTree/InvenTree/ready.py @@ -12,7 +12,7 @@ def isInTestMode(): return False -def canAppAccessDatabase(): +def canAppAccessDatabase(allow_test=False): """ Returns True if the apps.py file can access database records. @@ -33,11 +33,16 @@ def canAppAccessDatabase(): 'createsuperuser', 'wait_for_db', 'prerender', + 'rebuild', 'collectstatic', 'makemessages', 'compilemessages', ] + if not allow_test: + # Override for testing mode? + excluded_commands.append('test') + for cmd in excluded_commands: if cmd in sys.argv: return False diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index fa7674723c..f093255ff0 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -6,12 +6,15 @@ Serializers used in various InvenTree apps # -*- coding: utf-8 -*- from __future__ import unicode_literals -from rest_framework import serializers - import os from django.conf import settings from django.contrib.auth.models import User +from django.core.exceptions import ValidationError as DjangoValidationError + +from rest_framework import serializers +from rest_framework.fields import empty +from rest_framework.exceptions import ValidationError class UserSerializer(serializers.ModelSerializer): @@ -39,18 +42,34 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): but also ensures that the underlying model class data are checked on validation. """ - def validate(self, data): + def run_validation(self, data=empty): """ Perform serializer validation. In addition to running validators on the serializer fields, this class ensures that the underlying model is also validated. """ - # Run any native validation checks first (may throw an ValidationError) - data = super(serializers.ModelSerializer, self).validate(data) + # Run any native validation checks first (may raise a ValidationError) + data = super().run_validation(data) # Now ensure the underlying model is correct - instance = self.Meta.model(**data) - instance.clean() + + if not hasattr(self, 'instance') or self.instance is None: + # No instance exists (we are creating a new one) + instance = self.Meta.model(**data) + else: + # Instance already exists (we are updating!) + instance = self.instance + + # Update instance fields + for attr, value in data.items(): + setattr(instance, attr, value) + + # Run a 'full_clean' on the model. + # Note that by default, DRF does *not* perform full model validation! + try: + instance.full_clean() + except (ValidationError, DjangoValidationError) as exc: + raise ValidationError(detail=serializers.as_serializer_error(exc)) return data @@ -82,3 +101,17 @@ class InvenTreeAttachmentSerializerField(serializers.FileField): return None return os.path.join(str(settings.MEDIA_URL), str(value)) + + +class InvenTreeImageSerializerField(serializers.ImageField): + """ + Custom image serializer. + On upload, validate that the file is a valid image file + """ + + def to_representation(self, value): + + if not value: + return None + + return os.path.join(str(settings.MEDIA_URL), str(value)) diff --git a/InvenTree/InvenTree/static/script/inventree/api.js b/InvenTree/InvenTree/static/script/inventree/api.js index 52aba80ef5..b43bcc8419 100644 --- a/InvenTree/InvenTree/static/script/inventree/api.js +++ b/InvenTree/InvenTree/static/script/inventree/api.js @@ -58,7 +58,7 @@ function inventreeFormDataUpload(url, data, options={}) { xhr.setRequestHeader('X-CSRFToken', csrftoken); }, url: url, - method: 'POST', + method: options.method || 'POST', data: data, processData: false, contentType: false, diff --git a/InvenTree/InvenTree/static/script/inventree/inventree.js b/InvenTree/InvenTree/static/script/inventree/inventree.js index 1a6fdec47a..79e02d7da5 100644 --- a/InvenTree/InvenTree/static/script/inventree/inventree.js +++ b/InvenTree/InvenTree/static/script/inventree/inventree.js @@ -219,6 +219,7 @@ function enableDragAndDrop(element, url, options) { data - Other form data to upload success - Callback function in case of success error - Callback function in case of error + method - HTTP method */ data = options.data || {}; @@ -254,7 +255,8 @@ function enableDragAndDrop(element, url, options) { if (options.error) { options.error(xhr, status, error); } - } + }, + method: options.method || 'POST', } ); } else { diff --git a/InvenTree/InvenTree/status.py b/InvenTree/InvenTree/status.py index 970e88831d..512c68e93b 100644 --- a/InvenTree/InvenTree/status.py +++ b/InvenTree/InvenTree/status.py @@ -4,9 +4,10 @@ Provides system status functionality checks. # -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ +from django.utils import timezone import logging -from datetime import datetime, timedelta +from datetime import timedelta from django_q.models import Success from django_q.monitor import Stat @@ -34,7 +35,7 @@ def is_worker_running(**kwargs): Check to see if we have a result within the last 20 minutes """ - now = datetime.now() + now = timezone.now() past = now - timedelta(minutes=20) results = Success.objects.filter( @@ -60,21 +61,21 @@ def is_email_configured(): # Display warning unless in test mode if not settings.TESTING: - logger.warning("EMAIL_HOST is not configured") + logger.debug("EMAIL_HOST is not configured") if not settings.EMAIL_HOST_USER: configured = False # Display warning unless in test mode if not settings.TESTING: - logger.warning("EMAIL_HOST_USER is not configured") + logger.debug("EMAIL_HOST_USER is not configured") if not settings.EMAIL_HOST_PASSWORD: configured = False # Display warning unless in test mode if not settings.TESTING: - logger.warning("EMAIL_HOST_PASSWORD is not configured") + logger.debug("EMAIL_HOST_PASSWORD is not configured") return configured diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index d45df99152..f0fe504072 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -28,7 +28,7 @@ def schedule_task(taskname, **kwargs): try: from django_q.models import Schedule except (AppRegistryNotReady): - logger.warning("Could not start background tasks - App registry not ready") + logger.info("Could not start background tasks - App registry not ready") return try: @@ -80,7 +80,7 @@ def heartbeat(): try: from django_q.models import Success - logger.warning("Could not perform heartbeat task - App registry not ready") + logger.info("Could not perform heartbeat task - App registry not ready") except AppRegistryNotReady: return @@ -105,7 +105,7 @@ def delete_successful_tasks(): try: from django_q.models import Success except AppRegistryNotReady: - logger.warning("Could not perform 'delete_successful_tasks' - App registry not ready") + logger.info("Could not perform 'delete_successful_tasks' - App registry not ready") return threshold = datetime.now() - timedelta(days=30) @@ -126,6 +126,7 @@ def check_for_updates(): import common.models except AppRegistryNotReady: # Apps not yet loaded! + logger.info("Could not perform 'check_for_updates' - App registry not ready") return response = requests.get('https://api.github.com/repos/inventree/inventree/releases/latest') @@ -172,6 +173,7 @@ def update_exchange_rates(): from django.conf import settings except AppRegistryNotReady: # Apps not yet loaded! + logger.info("Could not perform 'update_exchange_rates' - App registry not ready") return except: # Other error? diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index 8435d756fb..f196006df9 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -77,7 +77,7 @@ class APITests(InvenTreeAPITestCase): self.assertIn('version', data) self.assertIn('instance', data) - self.assertEquals('InvenTree', data['server']) + self.assertEqual('InvenTree', data['server']) def test_role_view(self): """ diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 5161bee6a1..08fa5e0ae4 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -10,19 +10,25 @@ import common.models INVENTREE_SW_VERSION = "0.2.4 pre" +INVENTREE_API_VERSION = 6 + """ Increment thi API version number whenever there is a significant change to the API that any clients need to know about -v3 -> 2021-05-22: - - The updated StockItem "history tracking" now uses a different interface +v6 -> 2021-06-23 + - Part and Company images can now be directly uploaded via the REST API + +v5 -> 2021-06-21 + - Adds API interface for manufacturer part parameters v4 -> 2021-06-01 - BOM items can now accept "variant stock" to be assigned against them - Many slight API tweaks were needed to get this to work properly! -""" +v3 -> 2021-05-22: + - The updated StockItem "history tracking" now uses a different interface -INVENTREE_API_VERSION = 4 +""" def inventreeInstanceName(): diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 06aec54c18..17caeb872d 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -337,7 +337,7 @@ class AjaxMixin(InvenTreeRoleMixin): # Do nothing by default pass - def renderJsonResponse(self, request, form=None, data={}, context=None): + def renderJsonResponse(self, request, form=None, data=None, context=None): """ Render a JSON response based on specific class context. Args: @@ -349,6 +349,9 @@ class AjaxMixin(InvenTreeRoleMixin): Returns: JSON response object """ + # a empty dict as default can be dangerous - set it here if empty + if not data: + data = {} if not request.is_ajax(): return HttpResponseRedirect('/') diff --git a/InvenTree/build/migrations/0029_auto_20210601_1525.py b/InvenTree/build/migrations/0029_auto_20210601_1525.py index c5ea04b5c9..e8b2d58947 100644 --- a/InvenTree/build/migrations/0029_auto_20210601_1525.py +++ b/InvenTree/build/migrations/0029_auto_20210601_1525.py @@ -40,7 +40,8 @@ def assign_bom_items(apps, schema_editor): except BomItem.DoesNotExist: pass - print(f"Assigned BomItem for {count_valid}/{count_total} entries") + if count_total > 0: + print(f"Assigned BomItem for {count_valid}/{count_total} entries") def unassign_bom_items(apps, schema_editor): diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 2dd85f81c7..ddd27b734e 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -212,6 +212,13 @@ class InvenTreeSetting(models.Model): 'validator': bool, }, + 'PART_SHOW_PRICE_IN_FORMS': { + 'name': _('Show Price in Forms'), + 'description': _('Display part price in some forms'), + 'default': True, + 'validator': bool, + }, + 'PART_INTERNAL_PRICE': { 'name': _('Internal Prices'), 'description': _('Enable internal prices for parts'), diff --git a/InvenTree/company/admin.py b/InvenTree/company/admin.py index b339a65c0e..2c3be87c84 100644 --- a/InvenTree/company/admin.py +++ b/InvenTree/company/admin.py @@ -11,6 +11,7 @@ import import_export.widgets as widgets from .models import Company from .models import SupplierPart from .models import SupplierPriceBreak +from .models import ManufacturerPart, ManufacturerPartParameter from part.models import Part @@ -71,6 +72,92 @@ class SupplierPartAdmin(ImportExportModelAdmin): ] +class ManufacturerPartResource(ModelResource): + """ + Class for managing ManufacturerPart data import/export + """ + + part = Field(attribute='part', widget=widgets.ForeignKeyWidget(Part)) + + part_name = Field(attribute='part__full_name', readonly=True) + + manufacturer = Field(attribute='manufacturer', widget=widgets.ForeignKeyWidget(Company)) + + manufacturer_name = Field(attribute='manufacturer__name', readonly=True) + + class Meta: + model = ManufacturerPart + skip_unchanged = True + report_skipped = True + clean_model_instances = True + + +class ManufacturerPartParameterInline(admin.TabularInline): + """ + Inline for editing ManufacturerPartParameter objects, + directly from the ManufacturerPart admin view. + """ + + model = ManufacturerPartParameter + + +class SupplierPartInline(admin.TabularInline): + """ + Inline for the SupplierPart model + """ + + model = SupplierPart + + +class ManufacturerPartAdmin(ImportExportModelAdmin): + """ + Admin class for ManufacturerPart model + """ + + resource_class = ManufacturerPartResource + + list_display = ('part', 'manufacturer', 'MPN') + + search_fields = [ + 'manufacturer__name', + 'part__name', + 'MPN', + ] + + inlines = [ + SupplierPartInline, + ManufacturerPartParameterInline, + ] + + +class ManufacturerPartParameterResource(ModelResource): + """ + Class for managing ManufacturerPartParameter data import/export + """ + + class Meta: + model = ManufacturerPartParameter + skip_unchanged = True + report_skipped = True + clean_model_instance = True + + +class ManufacturerPartParameterAdmin(ImportExportModelAdmin): + """ + Admin class for ManufacturerPartParameter model + """ + + resource_class = ManufacturerPartParameterResource + + list_display = ('manufacturer_part', 'name', 'value') + + search_fields = [ + 'manufacturer_part__manufacturer__name', + 'name', + 'value' + ] + + class SupplierPriceBreakResource(ModelResource): """ Class for managing SupplierPriceBreak data import/export """ @@ -103,3 +190,6 @@ class SupplierPriceBreakAdmin(ImportExportModelAdmin): admin.site.register(Company, CompanyAdmin) admin.site.register(SupplierPart, SupplierPartAdmin) admin.site.register(SupplierPriceBreak, SupplierPriceBreakAdmin) + +admin.site.register(ManufacturerPart, ManufacturerPartAdmin) +admin.site.register(ManufacturerPartParameter, ManufacturerPartParameterAdmin) diff --git a/InvenTree/company/api.py b/InvenTree/company/api.py index 83aef7531b..6cd1e83dfa 100644 --- a/InvenTree/company/api.py +++ b/InvenTree/company/api.py @@ -15,11 +15,11 @@ from django.db.models import Q from InvenTree.helpers import str2bool from .models import Company -from .models import ManufacturerPart +from .models import ManufacturerPart, ManufacturerPartParameter from .models import SupplierPart, SupplierPriceBreak from .serializers import CompanySerializer -from .serializers import ManufacturerPartSerializer +from .serializers import ManufacturerPartSerializer, ManufacturerPartParameterSerializer from .serializers import SupplierPartSerializer, SupplierPriceBreakSerializer @@ -175,6 +175,86 @@ class ManufacturerPartDetail(generics.RetrieveUpdateDestroyAPIView): serializer_class = ManufacturerPartSerializer +class ManufacturerPartParameterList(generics.ListCreateAPIView): + """ + API endpoint for list view of ManufacturerPartParamater model. + """ + + queryset = ManufacturerPartParameter.objects.all() + serializer_class = ManufacturerPartParameterSerializer + + def get_serializer(self, *args, **kwargs): + + # Do we wish to include any extra detail? + try: + params = self.request.query_params + + optional_fields = [ + 'manufacturer_part_detail', + ] + + for key in optional_fields: + kwargs[key] = str2bool(params.get(key, None)) + + except AttributeError: + pass + + kwargs['context'] = self.get_serializer_context() + + return self.serializer_class(*args, **kwargs) + + def filter_queryset(self, queryset): + """ + Custom filtering for the queryset + """ + + queryset = super().filter_queryset(queryset) + + params = self.request.query_params + + # Filter by manufacturer? + manufacturer = params.get('manufacturer', None) + + if manufacturer is not None: + queryset = queryset.filter(manufacturer_part__manufacturer=manufacturer) + + # Filter by part? + part = params.get('part', None) + + if part is not None: + queryset = queryset.filter(manufacturer_part__part=part) + + return queryset + + filter_backends = [ + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ] + + filter_fields = [ + 'name', + 'value', + 'units', + 'manufacturer_part', + ] + + search_fields = [ + 'name', + 'value', + 'units', + ] + + +class ManufacturerPartParameterDetail(generics.RetrieveUpdateDestroyAPIView): + """ + API endpoint for detail view of ManufacturerPartParameter model + """ + + queryset = ManufacturerPartParameter.objects.all() + serializer_class = ManufacturerPartParameterSerializer + + class SupplierPartList(generics.ListCreateAPIView): """ API endpoint for list view of SupplierPart object @@ -249,7 +329,7 @@ class SupplierPartList(generics.ListCreateAPIView): params = self.request.query_params kwargs['part_detail'] = str2bool(params.get('part_detail', None)) kwargs['supplier_detail'] = str2bool(params.get('supplier_detail', None)) - kwargs['manufacturer_detail'] = str2bool(self.params.get('manufacturer_detail', None)) + kwargs['manufacturer_detail'] = str2bool(params.get('manufacturer_detail', None)) kwargs['pretty'] = str2bool(params.get('pretty', None)) except AttributeError: pass @@ -316,6 +396,13 @@ class SupplierPriceBreakList(generics.ListCreateAPIView): manufacturer_part_api_urls = [ + url(r'^parameter/', include([ + url(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'), + ])), + url(r'^(?P\d+)/?', ManufacturerPartDetail.as_view(), name='api-manufacturer-part-detail'), # Catch anything else diff --git a/InvenTree/company/apps.py b/InvenTree/company/apps.py index 4366f63434..76798c5ad4 100644 --- a/InvenTree/company/apps.py +++ b/InvenTree/company/apps.py @@ -44,8 +44,6 @@ class CompanyConfig(AppConfig): company.image.render_variations(replace=False) except FileNotFoundError: logger.warning(f"Image file '{company.image}' missing") - company.image = None - company.save() except UnidentifiedImageError: logger.warning(f"Image file '{company.image}' is invalid") except (OperationalError, ProgrammingError): diff --git a/InvenTree/company/forms.py b/InvenTree/company/forms.py index 6ffa94b746..80673b4fa4 100644 --- a/InvenTree/company/forms.py +++ b/InvenTree/company/forms.py @@ -16,7 +16,7 @@ from djmoney.forms.fields import MoneyField from common.settings import currency_code_default -from .models import Company +from .models import Company, ManufacturerPartParameter from .models import ManufacturerPart from .models import SupplierPart from .models import SupplierPriceBreak @@ -105,6 +105,21 @@ class EditManufacturerPartForm(HelperForm): ] +class EditManufacturerPartParameterForm(HelperForm): + """ + Form for creating / editing a ManufacturerPartParameter object + """ + + class Meta: + model = ManufacturerPartParameter + fields = [ + 'manufacturer_part', + 'name', + 'value', + 'units', + ] + + class EditSupplierPartForm(HelperForm): """ Form for editing a SupplierPart object """ diff --git a/InvenTree/company/migrations/0026_auto_20201110_1011.py b/InvenTree/company/migrations/0026_auto_20201110_1011.py index c6be37b967..20ec7d2f6f 100644 --- a/InvenTree/company/migrations/0026_auto_20201110_1011.py +++ b/InvenTree/company/migrations/0026_auto_20201110_1011.py @@ -71,7 +71,8 @@ def migrate_currencies(apps, schema_editor): count += 1 - print(f"Updated {count} SupplierPriceBreak rows") + if count > 0: + print(f"Updated {count} SupplierPriceBreak rows") def reverse_currencies(apps, schema_editor): """ diff --git a/InvenTree/company/migrations/0038_manufacturerpartparameter.py b/InvenTree/company/migrations/0038_manufacturerpartparameter.py new file mode 100644 index 0000000000..dccfa715e8 --- /dev/null +++ b/InvenTree/company/migrations/0038_manufacturerpartparameter.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.4 on 2021-06-20 07:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0037_supplierpart_update_3'), + ] + + operations = [ + migrations.CreateModel( + name='ManufacturerPartParameter', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(help_text='Parameter name', max_length=500, verbose_name='Name')), + ('value', models.CharField(help_text='Parameter value', max_length=500, verbose_name='Value')), + ('units', models.CharField(blank=True, help_text='Parameter units', max_length=64, null=True, verbose_name='Units')), + ('manufacturer_part', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='parameters', to='company.manufacturerpart', verbose_name='Manufacturer Part')), + ], + options={ + 'unique_together': {('manufacturer_part', 'name')}, + }, + ), + ] diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index a5fac00e7d..093d545f78 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -371,6 +371,47 @@ class ManufacturerPart(models.Model): return s +class ManufacturerPartParameter(models.Model): + """ + A ManufacturerPartParameter represents a key:value parameter for a MnaufacturerPart. + + This is used to represent parmeters / properties for a particular manufacturer part. + + Each parameter is a simple string (text) value. + """ + + class Meta: + unique_together = ('manufacturer_part', 'name') + + manufacturer_part = models.ForeignKey( + ManufacturerPart, + on_delete=models.CASCADE, + related_name='parameters', + verbose_name=_('Manufacturer Part'), + ) + + name = models.CharField( + max_length=500, + blank=False, + verbose_name=_('Name'), + help_text=_('Parameter name') + ) + + value = models.CharField( + max_length=500, + blank=False, + verbose_name=_('Value'), + help_text=_('Parameter value') + ) + + units = models.CharField( + max_length=64, + blank=True, null=True, + verbose_name=_('Units'), + help_text=_('Parameter units') + ) + + class SupplierPart(models.Model): """ Represents a unique part as provided by a Supplier Each SupplierPart is identified by a SKU (Supplier Part Number) diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index 4b1019656e..1e97756987 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -6,14 +6,15 @@ from rest_framework import serializers from sql_util.utils import SubqueryCount -from .models import Company -from .models import ManufacturerPart -from .models import SupplierPart, SupplierPriceBreak - from InvenTree.serializers import InvenTreeModelSerializer +from InvenTree.serializers import InvenTreeImageSerializerField from part.serializers import PartBriefSerializer +from .models import Company +from .models import ManufacturerPart, ManufacturerPartParameter +from .models import SupplierPart, SupplierPriceBreak + class CompanyBriefSerializer(InvenTreeModelSerializer): """ Serializer for Company object (limited detail) """ @@ -52,7 +53,7 @@ class CompanySerializer(InvenTreeModelSerializer): url = serializers.CharField(source='get_absolute_url', read_only=True) - image = serializers.CharField(source='get_thumbnail_url', read_only=True) + image = InvenTreeImageSerializerField(required=False, allow_null=True) parts_supplied = serializers.IntegerField(read_only=True) parts_manufactured = serializers.IntegerField(read_only=True) @@ -124,6 +125,35 @@ class ManufacturerPartSerializer(InvenTreeModelSerializer): ] +class ManufacturerPartParameterSerializer(InvenTreeModelSerializer): + """ + Serializer for the ManufacturerPartParameter model + """ + + manufacturer_part_detail = ManufacturerPartSerializer(source='manufacturer_part', many=False, read_only=True) + + def __init__(self, *args, **kwargs): + + man_detail = kwargs.pop('manufacturer_part_detail', False) + + super(ManufacturerPartParameterSerializer, self).__init__(*args, **kwargs) + + if not man_detail: + self.fields.pop('manufacturer_part_detail') + + class Meta: + model = ManufacturerPartParameter + + fields = [ + 'pk', + 'manufacturer_part', + 'manufacturer_part_detail', + 'name', + 'value', + 'units', + ] + + class SupplierPartSerializer(InvenTreeModelSerializer): """ Serializer for SupplierPart object """ diff --git a/InvenTree/company/templates/company/company_base.html b/InvenTree/company/templates/company/company_base.html index 1eefade272..a276f5df4f 100644 --- a/InvenTree/company/templates/company/company_base.html +++ b/InvenTree/company/templates/company/company_base.html @@ -139,11 +139,17 @@ enableDragAndDrop( "#company-thumb", - "{% url 'company-image' company.id %}", + "{% url 'api-company-detail' company.id %}", { label: 'image', + method: 'PATCH', success: function(data, status, xhr) { - location.reload(); + + if (data.image) { + $('#company-image').attr('src', data.image); + } else { + location.reload(); + } } } ); diff --git a/InvenTree/company/templates/company/manufacturer_part_suppliers.html b/InvenTree/company/templates/company/manufacturer_part_suppliers.html index 647bf4750d..9f445ec215 100644 --- a/InvenTree/company/templates/company/manufacturer_part_suppliers.html +++ b/InvenTree/company/templates/company/manufacturer_part_suppliers.html @@ -7,7 +7,7 @@ {% endblock %} {% block heading %} -{% trans "Supplier Parts" %} +{% trans "Suppliers" %} {% endblock %} {% block details %} @@ -30,9 +30,44 @@ {% endblock %} +{% block post_content_panels %} + +
+
+

{% trans "Parameters" %}

+
+
+
+
+ +
+ +
+
+
+ +
+
+
+ +{% endblock %} + {% block js_ready %} {{ block.super }} +$('#parameter-create').click(function() { + launchModalForm( + "{% url 'manufacturer-part-parameter-create' %}", + { + data: { + manufacturer_part: {{ part.id }}, + } + } + ); +}); + $('#supplier-create').click(function () { launchModalForm( "{% url 'supplier-part-create' %}", @@ -84,6 +119,16 @@ loadSupplierPartTable( } ); +loadManufacturerPartParameterTable( + "#parameter-table", + "{% url 'api-manufacturer-part-parameter-list' %}", + { + params: { + manufacturer_part: {{ part.id }}, + } + } +); + linkButtonsToSelection($("#supplier-table"), ['#supplier-part-options']) {% endblock %} \ No newline at end of file diff --git a/InvenTree/company/test_api.py b/InvenTree/company/test_api.py index c43280c76c..dd42b97801 100644 --- a/InvenTree/company/test_api.py +++ b/InvenTree/company/test_api.py @@ -50,10 +50,15 @@ class CompanyTest(InvenTreeAPITestCase): self.assertEqual(response.data['name'], 'ACME') # Change the name of the company + # Note we should not have the correct permissions (yet) data = response.data data['name'] = 'ACMOO' - response = self.client.patch(url, data, format='json') - self.assertEqual(response.status_code, status.HTTP_200_OK) + response = self.client.patch(url, data, format='json', expected_code=400) + + self.assignRole('company.change') + + response = self.client.patch(url, data, format='json', expected_code=200) + self.assertEqual(response.data['name'], 'ACMOO') def test_company_search(self): @@ -119,7 +124,9 @@ class ManufacturerTest(InvenTreeAPITestCase): data = { 'MPN': 'MPN-TEST-123', } + response = self.client.patch(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['MPN'], 'MPN-TEST-123') diff --git a/InvenTree/company/urls.py b/InvenTree/company/urls.py index 11f1be5339..51aa81f1c7 100644 --- a/InvenTree/company/urls.py +++ b/InvenTree/company/urls.py @@ -53,20 +53,25 @@ price_break_urls = [ url(r'^(?P\d+)/delete/', views.PriceBreakDelete.as_view(), name='price-break-delete'), ] -manufacturer_part_detail_urls = [ - url(r'^edit/?', views.ManufacturerPartEdit.as_view(), name='manufacturer-part-edit'), - - url(r'^suppliers/', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part_suppliers.html'), name='manufacturer-part-suppliers'), - - url('^.*$', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part_suppliers.html'), name='manufacturer-part-detail'), -] - manufacturer_part_urls = [ url(r'^new/?', views.ManufacturerPartCreate.as_view(), name='manufacturer-part-create'), - url(r'delete/', views.ManufacturerPartDelete.as_view(), name='manufacturer-part-delete'), + url(r'^delete/', views.ManufacturerPartDelete.as_view(), name='manufacturer-part-delete'), - url(r'^(?P\d+)/', include(manufacturer_part_detail_urls)), + # URLs for ManufacturerPartParameter views (create / edit / delete) + url(r'^parameter/', include([ + url(r'^new/', views.ManufacturerPartParameterCreate.as_view(), name='manufacturer-part-parameter-create'), + url(r'^(?P\d)/', include([ + url(r'^edit/', views.ManufacturerPartParameterEdit.as_view(), name='manufacturer-part-parameter-edit'), + url(r'^delete/', views.ManufacturerPartParameterDelete.as_view(), name='manufacturer-part-parameter-delete'), + ])), + ])), + + url(r'^(?P\d+)/', include([ + url(r'^edit/?', views.ManufacturerPartEdit.as_view(), name='manufacturer-part-edit'), + url(r'^suppliers/', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part_suppliers.html'), name='manufacturer-part-suppliers'), + url('^.*$', views.ManufacturerPartDetail.as_view(template_name='company/manufacturer_part_suppliers.html'), name='manufacturer-part-detail'), + ])), ] supplier_part_detail_urls = [ diff --git a/InvenTree/company/views.py b/InvenTree/company/views.py index 6de1439823..74a583710a 100644 --- a/InvenTree/company/views.py +++ b/InvenTree/company/views.py @@ -23,14 +23,14 @@ from InvenTree.views import AjaxCreateView, AjaxUpdateView, AjaxDeleteView from InvenTree.helpers import str2bool from InvenTree.views import InvenTreeRoleMixin -from .models import Company +from .models import Company, ManufacturerPartParameter from .models import ManufacturerPart from .models import SupplierPart from .models import SupplierPriceBreak from part.models import Part -from .forms import EditCompanyForm +from .forms import EditCompanyForm, EditManufacturerPartParameterForm from .forms import CompanyImageForm from .forms import EditManufacturerPartForm from .forms import EditSupplierPartForm @@ -504,6 +504,66 @@ class ManufacturerPartDelete(AjaxDeleteView): return self.renderJsonResponse(self.request, data=data, form=self.get_form()) +class ManufacturerPartParameterCreate(AjaxCreateView): + """ + View for creating a new ManufacturerPartParameter object + """ + + model = ManufacturerPartParameter + form_class = EditManufacturerPartParameterForm + ajax_form_title = _('Add Manufacturer Part Parameter') + + def get_form(self): + + form = super().get_form() + + # Hide the manufacturer_part field if specified + if form.initial.get('manufacturer_part', None): + form.fields['manufacturer_part'].widget = HiddenInput() + + return form + + def get_initial(self): + + initials = super().get_initial().copy() + + manufacturer_part = self.get_param('manufacturer_part') + + if manufacturer_part: + try: + initials['manufacturer_part'] = ManufacturerPartParameter.objects.get(pk=manufacturer_part) + except (ValueError, ManufacturerPartParameter.DoesNotExist): + pass + + return initials + + +class ManufacturerPartParameterEdit(AjaxUpdateView): + """ + View for editing a ManufacturerPartParameter object + """ + + model = ManufacturerPartParameter + form_class = EditManufacturerPartParameterForm + ajax_form_title = _('Edit Manufacturer Part Parameter') + + def get_form(self): + + form = super().get_form() + + form.fields['manufacturer_part'].widget = HiddenInput() + + return form + + +class ManufacturerPartParameterDelete(AjaxDeleteView): + """ + View for deleting a ManufacturerPartParameter object + """ + + model = ManufacturerPartParameter + + class SupplierPartDetail(DetailView): """ Detail view for SupplierPart """ model = SupplierPart @@ -563,7 +623,8 @@ class SupplierPartEdit(AjaxUpdateView): supplier_part = self.get_object() if supplier_part.manufacturer_part: - initials['manufacturer'] = supplier_part.manufacturer_part.manufacturer.id + if supplier_part.manufacturer_part.manufacturer: + initials['manufacturer'] = supplier_part.manufacturer_part.manufacturer.id initials['MPN'] = supplier_part.manufacturer_part.MPN return initials diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 9eeedee291..3ce90dc928 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:41\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -77,7 +77,7 @@ msgstr "Kategorie auswählen" msgid "Duplicate serial: {n}" msgstr "Doppelte Seriennummer: {n}" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" @@ -122,9 +122,9 @@ msgstr "Kommentar" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Benutzer" @@ -132,34 +132,35 @@ msgstr "Benutzer" msgid "upload date" msgstr "Hochladedatum" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Name" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Beschreibung" @@ -191,15 +192,15 @@ msgstr "Polnisch" msgid "Turkish" msgstr "Türkisch" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "E-Mail-Backend nicht konfiguriert" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "InvenTree Status-Überprüfung fehlgeschlagen" @@ -372,27 +373,27 @@ msgstr "Überschuss darf 100% nicht überschreiten" msgid "Overage must be an integer value or a percentage" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "Element löschen" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "Häkchen setzen um Löschung von Objekt zu bestätigen" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "Benutzerinformationen bearbeiten" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "Passwort eingeben" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "Passwörter stimmen nicht überein" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "Systeminformationen" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "geplantes Bestelldatum" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "Zieldatum" @@ -462,22 +463,21 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung." #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung." #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "Anzahl" @@ -500,7 +501,7 @@ msgstr "Anzahl der zu bauenden Teile" msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "Seriennummer" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "Bauauftrag als vollständig markieren" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "Lagerort" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "Lagerort der Endprodukte" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "Status" @@ -583,16 +584,16 @@ msgstr "Menge der BestandsObjekte für Zuordnung auswählen" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "Bauauftrag" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "Bauaufträge" msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "Referenz" @@ -626,27 +627,27 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "Teil" @@ -710,16 +711,16 @@ msgstr "Losnummer" msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "Fertigstellungsdatum" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "Verantwortlicher Benutzer" @@ -757,26 +758,26 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist" msgid "External Link" msgstr "Externer Link" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "Link zu einer externen URL" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "Notizen" @@ -809,11 +810,11 @@ msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "Reserviermenge ({n}) muss kleiner Bestandsmenge ({q}) sein. Zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "Zu viele BestandsObjekt zugewiesen" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "Ausgewähltes BestandsObjekt nicht Stückliste für Teil '{p}' gefunden" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "Bauauftrag" @@ -836,15 +837,13 @@ msgstr "Bauauftrag" msgid "Build to allocate parts" msgstr "Bauauftrag starten um Teile zuzuweisen" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "BestandsObjekt" @@ -880,7 +879,7 @@ msgstr "Lagerbestand Bauauftrag zuweisen" msgid "Auto Allocate" msgstr "Automatisch zuweisen" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "Bestandszuordnung aufheben" @@ -917,15 +916,15 @@ msgstr "Dieser Bauauftrag hat keine zugeordneten Stücklisten-Einträge" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "Seriennummer" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "Anhänge" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "Fortschritt" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ 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:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "Ziel-Lager" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "Ziel-Lagerort nicht angegeben" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "Losnummer" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "Erstellt" @@ -1210,7 +1211,7 @@ msgstr "Erstellt" msgid "No target date set" msgstr "Kein Ziel-Datum gesetzt" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "Fertig" @@ -1248,9 +1249,9 @@ msgstr "Bauauftrag-details" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "Details" @@ -1285,8 +1286,8 @@ msgstr "Bermerkungen bearbeiten" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "Speichern" @@ -1411,8 +1412,8 @@ msgstr "Teil muss aktuell im Bestand sein" msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "Verfügbar" @@ -1598,8 +1599,8 @@ msgstr "Aktuelle Teile-Stände" msgid "Number of recent parts to display on index page" msgstr "Anzahl der neusten Teile auf der Startseite" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "Vorlage" @@ -1608,7 +1609,7 @@ msgstr "Vorlage" msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "Baugruppe" @@ -1617,7 +1618,7 @@ msgstr "Baugruppe" msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "Komponente" @@ -1626,7 +1627,7 @@ msgstr "Komponente" msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "Kaufbar" @@ -1634,7 +1635,7 @@ msgstr "Kaufbar" msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "Verkäuflich" @@ -1643,7 +1644,7 @@ msgstr "Verkäuflich" msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "Nachverfolgbar" @@ -1652,7 +1653,7 @@ msgstr "Nachverfolgbar" msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "Virtuell" @@ -1669,160 +1670,185 @@ msgstr "zeige Bestand in Eingabemasken" msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:209 templates/stats.html:25 +#: common/models.py:209 +msgid "Show Price in Forms" +msgstr "" + +#: common/models.py:210 +msgid "Display part price in some forms" +msgstr "" + +#: common/models.py:216 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:210 +#: common/models.py:231 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:216 +#: common/models.py:237 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:217 +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "Test-Berichte" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:249 +#: common/models.py:270 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:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "Tage" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "Gruppieren nach Teil" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "Bestand in Tabellen anhand von Teil-Referenz gruppieren" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "aktueller Bestand" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "Anzahl des geänderten Bestands auf der Startseite" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "Bauauftrag-Referenz Präfix" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "Präfix für Bauauftrag-Referenz" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "Bauauftrag-Referenz RegEx" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "Auftrags-Referenz Präfix" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "Präfix für Auftrags-Referenz" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "Bestellungs-Referenz Präfix" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "Präfix für Bestellungs-Referenz" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "Preis" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "Standard" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "Angegebener Wert muss ein Wahrheitswert sein" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "Datei hochgeladen" @@ -1877,29 +1905,29 @@ msgstr "URL" msgid "Image URL" msgstr "Bild-URL" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "Einzelpreis" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "Preis für eine Einheit" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "MPN" @@ -1952,11 +1980,11 @@ msgstr "Kontakt" msgid "Point of contact" msgstr "Anlaufstelle" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "Link" @@ -1964,7 +1992,7 @@ msgstr "Link" msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "Bild" @@ -1992,12 +2020,12 @@ msgstr "ist Hersteller" msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "Basisteil" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "Teil auswählen" @@ -2008,7 +2036,7 @@ msgstr "Teil auswählen" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "Hersteller" @@ -2020,87 +2048,112 @@ msgstr "Externe URL für das Herstellerteil" msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "Herstellerteil" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "Wert" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "Einheiten" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "SKU (Lagerbestandseinheit)" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "Herstellerteil" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "Herstellerteil auswählen" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "Teil-URL des Zulieferers" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "Notiz" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "Verpackungen" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "Vielfache" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "Mehrere bestellen" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "Zugeordneter Bestand" @@ -2166,11 +2219,11 @@ msgstr "Keine Website angegeben" msgid "Uses default currency" msgstr "verwendet Standard-Währung" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "Kunde" @@ -2216,7 +2269,7 @@ msgstr "Teile löschen" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "Neues Teil" @@ -2249,13 +2302,12 @@ msgstr "Exportieren" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "Zuliefererteile" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "Neues Zuliefererteil anlegen" @@ -2263,12 +2315,12 @@ msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "Neues Zuliefererteil" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2320,8 +2372,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "Für dieses Herstellerteil sind %(count)s Lieferanten definiert. Wenn Sie es löschen, werden die folgenden Lieferantenteile ebenfalls gelöscht:" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "Zulieferer" @@ -2333,13 +2386,13 @@ msgstr "Herstellerteil-Bestand" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "Lagerbestand" @@ -2361,11 +2414,25 @@ msgstr "Zuliefererteil entfernen" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "Löschen" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "Parameter" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "Neuer Parameter" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "Neuen Zulieferer anlegen" @@ -2380,13 +2447,13 @@ msgstr "Hergestellte Teile" msgid "Supplied Parts" msgstr "Zuliefererteile" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "Teilbestand" @@ -2397,7 +2464,7 @@ msgstr "Teilbestand" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2409,7 +2476,7 @@ msgstr "Aufträge" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2443,7 +2510,7 @@ msgstr "Neuer Auftrag" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -2491,8 +2558,8 @@ msgstr "Teil bestellen" msgid "Pricing Information" msgstr "Preisinformationen ansehen" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "Preisstaffel hinzufügen" @@ -2511,8 +2578,8 @@ msgstr "Preisstaffel bearbeiten" msgid "Delete price break" msgstr "Preisstaffel löschen" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "Hersteller" @@ -2534,20 +2601,20 @@ msgstr "Firmen" msgid "New Company" msgstr "Neue Firma" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "Bild herunterladen" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "Ungültige Antwort {code}" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" @@ -2595,27 +2662,35 @@ msgstr "Neues Herstellerteil anlegen" msgid "Delete Manufacturer Part" msgstr "Herstellerteil löschen" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "Zuliefererteil bearbeiten" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "Neues Zuliefererteil anlegen" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "Zuliefererteil entfernen" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "neue Preisstaffel hinzufügt" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "Preisstaffel bearbeiten" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "Preisstaffel löschen" @@ -2639,7 +2714,7 @@ msgstr "Label" msgid "Label template file" msgstr "Label-Vorlage-Datei" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "Aktiviert" @@ -2663,7 +2738,7 @@ msgstr "Höhe [mm]" msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "Dateinamen-Muster" @@ -2675,8 +2750,8 @@ msgstr "Muster für die Erstellung von Label-Dateinamen" msgid "Query filters (comma-separated list of key=value pairs" msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "Filter" @@ -2697,237 +2772,239 @@ msgstr "Bestellung stornieren" msgid "Ship order" msgstr "Bestellung versenden" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "Teile in diesen Lagerort empfangen" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "Bestellungs-Referenz" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "Zieldatum für Auftrags-Lieferung." -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "Auftrag-Nummer eingeben" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "Zieldatum für Auftrags-Fertigstellung." -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "Seriennummern für BestandsObjekt eingeben" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "Menge der BestandsObjekt eingeben" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "Bestellungs-Beschreibung" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "Erstellt von" -#: order/models.py:120 +#: order/models.py:121 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:125 +#: order/models.py:126 msgid "Order notes" msgstr "Bestell-Notizen" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "Bestellungs-Status" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "Zulieferer Bestellreferenz" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "Empfangen von" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "Ziel-Versanddatum" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Geplantes Lieferdatum für Auftrag." -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "Versand von" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "Bestellung kann nicht versendet werden weil er nicht anhängig ist" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "Bestellung" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "Bestellung" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "Empfangen" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +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:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "Verkaufspreis" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "BestandsObjekt wurde nicht zugewiesen" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kann BestandsObjekt keiner Zeile mit einem anderen Teil hinzufügen" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "Kann BestandsObjekt keiner Zeile ohne Teil hinzufügen" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für BestandsObjekt mit Seriennummer muss 1 sein" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "Position" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "Position" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "BestandsObjekt für Zuordnung auswählen" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" @@ -2956,7 +3033,7 @@ msgid "Export order to file" msgstr "Exportiere Bestellung in Datei" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "Bestellungs-Details" @@ -2978,8 +3055,8 @@ msgstr "Aufgegeben" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "Neuer Lagerort" @@ -3082,28 +3159,32 @@ msgstr "Schritt %(step)s von %(count)s" msgid "Order is already processed. Files cannot be uploaded." msgstr "Bestellung ist bereits verarbeitet. Dateien können nicht hochgeladen werden." -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "Schritt 1 von 2 - Zulieferer auswählen" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "Zulieferer auswählen" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "Keine kaufbaren Teile ausgewählt" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "Zulieferer auswählen" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "Zulieferer auswählen für %(name)s" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "Teil entfernen" @@ -3136,15 +3217,20 @@ msgid "Select a purchase order for %(name)s" msgstr "Bestellung für %(name)s auswählen" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "Bestellungs-Anhänge" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "Sind Sie sicher, dass Sie diese Position löschen möchten?" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "BestandsObjekte empfangen" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "Empfangene Teile" @@ -3154,8 +3240,8 @@ msgid "Purchase Order Items" msgstr "Bestellungs-Positionen" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -3163,25 +3249,31 @@ msgstr "Position hinzufügen" msgid "No line items found" msgstr "Keine Positionen gefunden" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "Summe" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "Stück-Preis" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" -msgstr "" +msgstr "Gesamtpreis" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "Position bearbeiten" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "Position löschen" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "Position empfangen" @@ -3202,7 +3294,7 @@ msgstr "Ausstehende Teile für %(order)s - %(desc)s empfangen" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3217,7 +3309,7 @@ msgid "Order Code" msgstr "Bestellnummer" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "Bestellt" @@ -3225,11 +3317,11 @@ msgstr "Bestellt" msgid "Receive" msgstr "Empfangen" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "Fehler: verknüpftes Teil wurde gelöscht" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "Position entfernen" @@ -3266,17 +3358,17 @@ msgid "Sales Order Items" msgstr "Auftrags-Positionen" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "Aktionen" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" @@ -3284,50 +3376,50 @@ msgstr "Bestands-Zuordnung löschen" msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "ID" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "Zugeordnet" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "Erledigt" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "PO" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "Seriennummern zuweisen" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "Lagerbestand zuweisen" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "Lagerbestand kaufen" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "Lagerbestand bauen" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "Preis berechnen" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "Position löschen " -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "Stückpreis aktualisieren" @@ -3368,10 +3460,6 @@ msgstr "Diese Aktion wird die folgenden BestandsObjekt vom Auftrag entfernen" msgid "Sales Order Attachments" msgstr "Auftrags-Anhänge" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "Sind Sie sicher, dass Sie diese Position löschen möchten?" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "Bestellungs-Anhang hinzufügen" @@ -3472,90 +3560,94 @@ msgstr "Anzahl kleiner null empfangen" msgid "No lines specified" msgstr "Keine Zeilen angegeben" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "{n} Teile bestellt" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "Zulieferer muss zu Teil und Bestellung passen" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "Position löschen" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "Position gelöscht" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "Seriennummern zuweisen" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "{n} Positionen zugeordnet" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "Position auswählen" -#: order/views.py:1613 +#: order/views.py:1623 #, python-brace-format msgid "No matching item for serial {serial}" msgstr "Kein passends Teil für Seriennummer {serial} gefunden" -#: order/views.py:1623 +#: order/views.py:1633 #, python-brace-format msgid "{serial} is not in stock" msgstr "{serial} ist nicht auf Lager" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "{serial} bereits einem Auftrag zugeordnet" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "Lagerbestand dem Auftrag zuweisen" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "Zuordnung bearbeiten" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "Zuordnung entfernen" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "Auftrag nicht gefunden" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "Preis nicht gefunden" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Stückpreis für {part} auf {price} aktualisiert" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "Standard-Lagerort" @@ -3633,7 +3725,7 @@ msgstr "Zulieferer einschließen" msgid "Include part supplier data in exported BOM" msgstr "Zulieferer-Daten in Stückliste-Export einschließen" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "Ausgangsteil" @@ -3709,7 +3801,7 @@ msgstr "Parameter-Vorlage zu Kategorien dieser Ebene hinzufügen" msgid "Add parameter template to all categories" msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "Untergeordnetes Teil" @@ -3729,7 +3821,7 @@ msgstr "Standard Stichwörter" msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" @@ -3740,366 +3832,361 @@ msgstr "Teil-Kategorie" msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "Nächste verfügbare Seriennummern wären" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "Nächste verfügbare Seriennummer ist" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "Die neuste Seriennummer ist" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "Variante von" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "Schlüsselwörter" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "Kategorie" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "Revision" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Lagerbestand dieses Teils" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "Minimaler Lagerbestand" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Lagerbestand" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "Einheiten" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "Aktiv" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:867 +#: part/models.py:852 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:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2040 +#: part/models.py:2063 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:2057 +#: part/models.py:2080 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:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "Benötigt" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:2096 +#: part/models.py:2119 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:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:2102 +#: part/models.py:2125 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:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "Einheit des Parameters" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "Wert" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "Optional" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "Überschuss" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "Geerbt" -#: part/models.py:2289 +#: part/models.py:2312 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:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Lagerbestand von Varianten kann für diese Stücklisten-Position verwendet werden" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "Stücklisten-Position" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:2538 +#: part/models.py:2563 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/templates/part/allocation.html:11 -msgid "Part Stock Allocations" -msgstr "Teil-Bestandszuordnungen" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" +msgstr "" #: part/templates/part/attachments.html:10 msgid "Part Attachments" @@ -4113,8 +4200,8 @@ msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "Die Löschung dieses Eintrags wird das Stücklisten-Position vom folgenden Teil entfernen" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "Stückliste" @@ -4161,7 +4248,7 @@ msgstr "Stückliste bearbeiten" msgid "Validate Bill of Materials" msgstr "Stückliste kontrollieren" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "Stückliste exportieren" @@ -4178,7 +4265,7 @@ msgid "All selected BOM items will be deleted" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "Neues Teil anlegen" @@ -4259,7 +4346,7 @@ msgstr "Neuen Bauauftrag beginnen" msgid "All parts" msgstr "Alle Teile" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "Teil-Kategorie anlegen" @@ -4319,7 +4406,7 @@ msgid "View grid display" msgstr "Rasteransicht anzeigen" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "Neuen Lagerort anlegen" @@ -4374,14 +4461,8 @@ msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die übergeordnete msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die oberste Kat. verschoben" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "Parameter" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "Teilparameter" @@ -4409,7 +4490,7 @@ msgstr "Teil evtl. Duplikat dieser Teile" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "%(full_name)s - %(desc)s (%(match_per)s%% übereinstimmend)" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "Teil Details" @@ -4489,6 +4570,36 @@ msgstr "Teil ist aktiv" msgid "Part is not active" msgstr "Teil ist nicht aktiv" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "Zugriff verweigert" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "Keine Berechtigung zum Anzeigen dieser Seite." + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "Teil-Hersteller" @@ -4502,127 +4613,141 @@ msgstr "Herstellerteile löschen" msgid "Create new manufacturer" msgstr "Neuen Hersteller anlegen" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "Teil Varianten" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "Varianten" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "Lagerbestand zuweisen" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "Zuweisungen" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "Benutzt in" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "Bestellpreisinformationen" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "Bestellpreis" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "Interner Preis" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "Preisinformationen ansehen" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "Teil Test-Vorlagen" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "Tests" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "Verknüpfte Teile" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "Teil-Bemerkungen" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "Berechnen" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "Preisspannen" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "Zulieferer-Preise" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "Stückpreis" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "Gesamtkosten" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "Keine Zulieferer-Preise verfügbar" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "Stücklistenpreise" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "Anmerkung: Stücklistenbepreisung für dieses Teil ist unvollständig" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "Keine Stücklisten-Preise verfügbar" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "Keine Preise für dieses Teil verfügbar" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "Bestandspreise" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "Für dieses Teil sind keine Bestandspreise verfügbar." -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "Einzelpreis - %(currency)s" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "Einzelpreisdifferenz - %(currency)s" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "Einzelpreis für Zuliefererteil- %(currency)s" @@ -4631,19 +4756,6 @@ msgstr "Einzelpreis für Zuliefererteil- %(currency)s" msgid "Add new parameter" msgstr "Parameter hinzufügen" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "Neuer Parameter" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "Wert" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "Bearbeiten" @@ -4661,7 +4773,7 @@ msgid "Part List" msgstr "Teileliste" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "Inaktiv" @@ -4741,14 +4853,10 @@ msgid "Can Build" msgstr "Herstellbar" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "Im Bau" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "Berechnen" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" @@ -4817,7 +4925,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "Lagerbestand aller Varianten von %(full_name)s" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "Kein Bestand" @@ -4854,7 +4962,7 @@ msgstr "Neue Variante anlegen" msgid "New Variant" msgstr "neue Variante anlegen" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "Unbekannte Datenbank" @@ -4923,227 +5031,239 @@ msgstr "Übereinstimmung gefunden - Teil trotzdem anlegen" msgid "Created new part" msgstr "Neues Teil angelegt" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "Teil-QR-Code" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "Teilbild hochladen" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "Teilbild aktualisiert" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "Teilbild auswählen" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "Teilbild nicht gefunden" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "Teileigenschaften bearbeiten" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "Stückliste duplizieren" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "bestätige Duplizierung Stückliste von übergeordneter Stückliste" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "Stückliste überprüfen" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "Bestätigen, dass Stückliste korrekt ist" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "überprüfte Stückliste" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "Keine Stückliste angegeben" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "Bitte eine gültige Anzahl eingeben" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "Bitte ein gültiges Teil auswählen" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "Teil doppelt ausgewählt" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "Teil auswählen" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "gewähltes Teil erzeugt rekursive Stückliste" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "Anzahl angeben" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "Teilparameter anlegen" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "Teilparameter bearbeiten" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "Teilparameter löschen" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "Teil-Kategorie bearbeiten" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "Teil-Kategorie löschen" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "Teil-Kategorie wurde gelöscht" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "Kategorieparametervorlage anlegen" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "Kategorieparametervorlage bearbeiten" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "Kategorieparametervorlage löschen" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "Stücklisten-Position anlegen" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "Stücklisten-Position bearbeiten" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "löschen von Stücklisten-Position bestätigen" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "Bericht-Vorlage Datei" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "Bericht-Vorlage Beschreibung" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "Bericht Revisionsnummer (autom. erhöht)" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "Muster für die Erstellung von Berichtsdateinamen" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "Bericht-Vorlage ist ein" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "BestandsObjekte-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "einfügen Installiert in Tests" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "Test-Ergebnisse für BestandsObjekte in Baugruppen einschließen" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "Bauauftrag Filter" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "Teil Filter" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "Bestellungs-Abfragefilter" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "Auftrags-Abfragefilter" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "Snippet" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "Ressource" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "Ressource-Beschreibung" @@ -5175,7 +5295,7 @@ msgid "Result" msgstr "Ergebnis" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "Datum" @@ -5198,7 +5318,7 @@ msgid "Moved {n} parts to {loc}" msgstr "{n} Teile nach {loc} bewegt" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -5484,12 +5604,12 @@ msgid "Stock Item Attachments" msgstr "BestandsObjekt-Anhang" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "abgelaufen" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "überfällig" @@ -5619,7 +5739,7 @@ msgstr "Dieses BestandsObjekt wird automatisch gelöscht wenn der Lagerbestand a msgid "Stock Item Details" msgstr "BestandsObjekt-Details" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "Kein Lagerort gesetzt" @@ -5631,25 +5751,29 @@ msgstr "Barcode-Bezeichner" msgid "Parent Item" msgstr "Elternposition" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Dieses BestandsObjekt lief am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Dieses BestandsObjekt läuft am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" @@ -5946,7 +6070,7 @@ msgstr "Entfernen" msgid "Add Stock Items" msgstr "BestandsObjekte hinzufügen" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "Hinzufügen" @@ -6012,7 +6136,7 @@ msgstr "BestandsObjekt bearbeiten" msgid "Serialize Stock" msgstr "Lagerbestand erfassen" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "Neues BestandsObjekt hinzufügen" @@ -6044,14 +6168,6 @@ msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" msgid "Add Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "Zugriff verweigert" - -#: templates/403.html:14 -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 msgid "Page Not Found" msgstr "Seite nicht gefunden" @@ -6120,11 +6236,11 @@ msgstr "Suchergebnisse" msgid "Enter a search query" msgstr "Eine Sucheanfrage eingeben" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "an Kunde versand" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" @@ -6172,12 +6288,12 @@ msgid "No category parameter templates found" msgstr "Keine Kategorie-Parametervorlagen gefunden" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "Vorlage bearbeiten" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "Vorlage löschen" @@ -6225,11 +6341,11 @@ msgstr "Teil-Einstellungen" msgid "Part Options" msgstr "Teil-Optionen" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "Teil-Parametervorlage" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" @@ -6345,47 +6461,51 @@ msgid "API Version" msgstr "API-Version" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "Django-Version" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "Commit-Hash" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "Commit-Datum" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "InvenTree-Dokumentation" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "Code auf GitHub ansehen" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "Danksagung" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "Mobile App" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "Fehlerbericht senden" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "In die Zwischenablage kopieren" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "Versionsinformationen kopieren" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "Schliessen" @@ -6446,7 +6566,7 @@ msgstr "Server-Fehler" msgid "Unknown response from server" msgstr "Unbekannte Antwort von Server erhalten" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "Ungültige Antwort von Server" @@ -6510,7 +6630,7 @@ msgstr "In Lagerorten buchen" msgid "Barcode does not match a valid location" msgstr "Barcode entspricht keinem Lagerort" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "Unterbaugruppe öffnen" @@ -6546,7 +6666,7 @@ msgstr "Stücklisten-Position bearbeiten" msgid "Delete BOM Item" msgstr "Stücklisten-Position löschen" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "Keine Stücklisten-Position(en) gefunden" @@ -6566,37 +6686,45 @@ msgstr "Endprodukt fertigstellen" msgid "Delete build output" msgstr "Endprodukt entfernen" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "Standort nicht angegeben" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "Neues BestandsObjekt" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "benötigtes Teil" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "Anzahl pro" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "Auswählen" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -6616,17 +6744,29 @@ msgstr "Keine Firmeninformation gefunden" msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "Vorlagenteil" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "Keine Zuliefererteile gefunden" @@ -6714,76 +6854,76 @@ msgstr "abbrechen" msgid "Loading Data" msgstr "Lade Daten" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "Abschicken" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "ungültige Antwort vom Server" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "Formulardaten fehlen bei Serverantwort" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "Formulardaten fehlerhaft" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "JSON Antwort enthält keine Formulardaten" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "Keine Antwort" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "keine Antwort vom InvenTree Server" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "Fehler 400: Ungültige Anfrage" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "Fehler 400 von Server erhalten" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "Fehler 401: Nicht Angemeldet" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "Authentication Kredentials nicht angegeben" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "Fehler 403: keine Berechtigung" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "Fehlende Berechtigung für diese Aktion" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "Fehler 404: Ressource nicht gefunden" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "Fehler 408: Zeitüberschreitung" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "Verbindungszeitüberschreitung bei der Datenanforderung" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "Fehler bei Formulardaten-Anfrage" @@ -6799,6 +6939,10 @@ msgstr "Bestellung überfällig" msgid "No sales orders found" msgstr "Keine Aufträge gefunden" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "JA" @@ -6827,39 +6971,39 @@ msgstr "Verkäufliches Teil" msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "Pfad" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Testvorlagen" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "Dieses Testergebnis ist für ein Hauptteil" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "Einzelpreisdifferenz" @@ -6957,155 +7101,155 @@ msgstr "Keine Testergebnisse gefunden" msgid "Test Date" msgstr "Testdatum" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "In Arbeit" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "In BestandsObjekt installiert" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "Auftrag zugewiesen" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden BestandsObjekte" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "Teile" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "lose" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "Lagerorte" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "unbekannter Lagerort" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "BestandsObjekt wird produziert" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "BestandsObjekt wurde Auftrag zugewiesen" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "BestandsObjekt wurde Kunden zugewiesen" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "BestandsObjekt ist abgelaufen" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "BestandsObjekt läuft demnächst ab" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "BestandsObjekt zugewiesen" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "BestandsObjekt in anderem Element verbaut" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "BestandsObjekt abgewiesen" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "BestandsObjekt verloren" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "BestandsObjekt zerstört" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "gelöscht" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "Inventur" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "Status" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "Status setzen" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "Status Code setzen" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "Status Code muss ausgewählt werden" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "Ungültiges Datum" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "Standort nicht mehr vorhanden" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "Bestellung existiert nicht mehr" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "Kunde existiert nicht mehr" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "Lagerbestand existiert nicht mehr" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "Hinzugefügt" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "Entfernt" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "Tracking-Eintrag bearbeiten" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "Tracking-Eintrag löschen" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "Neuen Lagerort anlegen" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "Keine installierten Elemente" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "Seriennummer" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "Lagerbestand entfernen" @@ -7271,56 +7415,56 @@ msgstr "Favorit" msgid "Purchasable" msgstr "Käuflich" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "Lade Daten" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "Zeilen pro Seite" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "zeige" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "bis" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "von" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "Zeilen" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "Suche" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "Keine passenden Ergebnisse gefunden" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "Zeige/Verstecke Pagination" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "Neu laden" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "umschalten" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "Spalten" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "Alle" @@ -7564,35 +7708,35 @@ msgstr "Berechtigungen" msgid "Important dates" msgstr "wichtige Daten" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "Gruppe" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "Ansicht" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "Ändern" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index ab3c93408d..792cf22fc2 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-06-16 22:40+0000\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,7 +78,7 @@ msgstr "" msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "" @@ -123,9 +123,9 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "" @@ -133,34 +133,35 @@ msgstr "" msgid "upload date" msgstr "" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "" @@ -192,15 +193,15 @@ msgstr "" msgid "Turkish" msgstr "" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" @@ -373,27 +374,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "" @@ -446,11 +447,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -463,22 +464,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -487,9 +487,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "" @@ -501,7 +502,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "" @@ -530,12 +531,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "" @@ -544,13 +545,13 @@ msgid "Location of completed parts" msgstr "" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "" @@ -584,16 +585,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -603,12 +604,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "" @@ -627,27 +628,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "" @@ -711,16 +712,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -737,9 +738,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -758,26 +759,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "" @@ -810,11 +811,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -828,7 +829,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -837,15 +838,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -881,7 +880,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -918,15 +917,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1038,11 +1037,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1186,7 +1184,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1195,15 +1196,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1211,7 +1212,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1249,9 +1250,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "" @@ -1286,8 +1287,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "" @@ -1412,8 +1413,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1599,8 +1600,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1609,7 +1610,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1618,7 +1619,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1627,7 +1628,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1635,7 +1636,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1644,7 +1645,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1653,7 +1654,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1670,160 +1671,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1844,7 +1870,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1878,29 +1906,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1953,11 +1981,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1965,7 +1993,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1993,12 +2021,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2009,7 +2037,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2021,87 +2049,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2167,11 +2220,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2217,7 +2270,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2250,13 +2303,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2264,12 +2316,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2321,8 +2373,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2334,13 +2387,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2362,11 +2415,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2381,13 +2448,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2398,7 +2465,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2410,7 +2477,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2444,7 +2511,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2492,8 +2559,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2512,8 +2579,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2535,20 +2602,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2596,27 +2663,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2640,7 +2715,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2664,7 +2739,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2676,8 +2751,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2698,237 +2773,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2957,7 +3034,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2979,8 +3056,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3083,28 +3160,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3137,15 +3218,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3155,8 +3241,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3164,25 +3250,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3203,7 +3295,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3218,7 +3310,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3226,11 +3318,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3267,17 +3359,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3285,50 +3377,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3369,10 +3461,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3473,90 +3561,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3634,7 +3726,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3710,7 +3802,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3730,7 +3822,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3741,365 +3833,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4114,8 +4201,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4162,7 +4249,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4179,7 +4266,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4260,7 +4347,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4320,7 +4407,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4375,14 +4462,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4410,7 +4491,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4490,6 +4571,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4503,127 +4614,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4632,19 +4757,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4662,7 +4774,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4742,14 +4854,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4818,7 +4926,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4855,7 +4963,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4924,227 +5032,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5176,7 +5296,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5199,7 +5319,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5485,12 +5605,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5620,7 +5740,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5632,25 +5752,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5947,7 +6071,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6013,7 +6137,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6045,14 +6169,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6121,11 +6237,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6171,12 +6287,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6224,11 +6340,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6344,47 +6460,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6445,7 +6565,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6509,7 +6629,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6545,7 +6665,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6565,37 +6685,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6615,17 +6743,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6713,76 +6853,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6798,6 +6938,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6826,39 +6970,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6956,155 +7100,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7270,56 +7414,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7563,34 +7707,34 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 6d0f3375c4..1bbb282835 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:40\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-25 14:06\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -19,19 +19,19 @@ msgstr "" #: InvenTree/api.py:64 msgid "API endpoint not found" -msgstr "" +msgstr "endpoint API no encontrado" #: InvenTree/api.py:110 msgid "No action specified" -msgstr "" +msgstr "No se especificó ninguna acción" #: InvenTree/api.py:124 msgid "No matching action found" -msgstr "" +msgstr "No se encontró ninguna acción coincidente" #: InvenTree/fields.py:44 msgid "Enter date" -msgstr "" +msgstr "Ingrese la fecha" #: InvenTree/forms.py:112 build/forms.py:102 build/forms.py:123 #: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227 @@ -42,19 +42,19 @@ msgstr "Confirmar" #: InvenTree/forms.py:128 msgid "Confirm delete" -msgstr "" +msgstr "Confirmar eliminación" #: InvenTree/forms.py:129 msgid "Confirm item deletion" -msgstr "" +msgstr "Confirmar borrado de artículo" #: InvenTree/forms.py:161 templates/registration/login.html:76 msgid "Enter password" -msgstr "" +msgstr "Introduzca contraseña" #: InvenTree/forms.py:162 msgid "Enter new password" -msgstr "" +msgstr "Ingrese su nueva contraseña" #: InvenTree/forms.py:169 msgid "Confirm password" @@ -66,21 +66,21 @@ msgstr "Confirmar contraseña nueva" #: InvenTree/forms.py:205 msgid "Apply Theme" -msgstr "" +msgstr "Aplicar tema" #: InvenTree/forms.py:235 msgid "Select Category" -msgstr "" +msgstr "Seleccionar Categoría" #: InvenTree/helpers.py:377 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" -msgstr "" +msgstr "Cantidad proporcionada no válida" #: InvenTree/helpers.py:387 msgid "Empty serial number string" @@ -90,7 +90,7 @@ msgstr "" #: InvenTree/helpers.py:440 #, python-brace-format msgid "Invalid group: {g}" -msgstr "" +msgstr "Grupo no válido: un {g}" #: InvenTree/helpers.py:445 #, python-brace-format @@ -99,7 +99,7 @@ msgstr "" #: InvenTree/helpers.py:453 msgid "No serial numbers found" -msgstr "" +msgstr "Numeros de serie no encontrados" #: InvenTree/helpers.py:457 #, python-brace-format @@ -122,9 +122,9 @@ msgstr "Comentario" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Usuario" @@ -132,34 +132,35 @@ msgstr "Usuario" msgid "upload date" msgstr "" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Nombre" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Descripción" @@ -191,26 +192,26 @@ msgstr "Polaco" msgid "Turkish" msgstr "Turco" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145 #: InvenTree/status_codes.py:314 msgid "Pending" -msgstr "" +msgstr "Pendiente" #: InvenTree/status_codes.py:105 msgid "Placed" -msgstr "" +msgstr "Colocado" #: InvenTree/status_codes.py:106 InvenTree/status_codes.py:317 msgid "Complete" @@ -234,7 +235,7 @@ msgstr "" #: InvenTree/status_codes.py:146 #: order/templates/order/sales_order_base.html:126 msgid "Shipped" -msgstr "" +msgstr "Enviado" #: InvenTree/status_codes.py:186 msgid "OK" @@ -254,7 +255,7 @@ msgstr "Destruido" #: InvenTree/status_codes.py:191 msgid "Rejected" -msgstr "" +msgstr "Rechazado" #: InvenTree/status_codes.py:272 msgid "Legacy stock tracking entry" @@ -262,31 +263,31 @@ msgstr "" #: InvenTree/status_codes.py:274 msgid "Stock item created" -msgstr "" +msgstr "Artículo de stock creado" #: InvenTree/status_codes.py:276 msgid "Edited stock item" -msgstr "" +msgstr "Elemento de stock editado" #: InvenTree/status_codes.py:277 msgid "Assigned serial number" -msgstr "" +msgstr "Número de serie asignado" #: InvenTree/status_codes.py:279 msgid "Stock counted" -msgstr "" +msgstr "Stock contado" #: InvenTree/status_codes.py:280 msgid "Stock manually added" -msgstr "" +msgstr "Stock añadido manualmente" #: InvenTree/status_codes.py:281 msgid "Stock manually removed" -msgstr "" +msgstr "Stock eliminado manualmente" #: InvenTree/status_codes.py:283 msgid "Location changed" -msgstr "" +msgstr "Ubicación cambiada" #: InvenTree/status_codes.py:285 msgid "Installed into assembly" @@ -326,11 +327,11 @@ msgstr "" #: InvenTree/status_codes.py:298 msgid "Build order output completed" -msgstr "" +msgstr "Construir orden de salida completado" #: InvenTree/status_codes.py:300 msgid "Received against purchase order" -msgstr "" +msgstr "Recibido contra la orden de compra" #: InvenTree/status_codes.py:315 msgid "Production" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "Eliminar elemento" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "Configurar Contraseña" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "Información del sistema" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "Cantidad" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "Números de serie" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "Unicación" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "Estado" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "Referencia" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "Parte" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "Responsable" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "Notas" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "Número de serie" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "Progreso" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "Destinación" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "Lote" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "Completados" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "Detalles" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "Guardar" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "días" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "Contacto" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "Fabricante" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "Proveedor" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "Nota" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "Cliente" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "Exportar" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "Eliminar" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "Fabricantes" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 97617764a4..61f43d466b 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:40\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -77,7 +77,7 @@ msgstr "Sélectionnez une catégorie" msgid "Duplicate serial: {n}" msgstr "Dupliquer le numéro de série: {n}" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "Quantité fournie invalide" @@ -122,9 +122,9 @@ msgstr "Commentaire" msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Utilisateur" @@ -132,34 +132,35 @@ msgstr "Utilisateur" msgid "upload date" msgstr "date de chargement" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Nom" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Description" @@ -191,15 +192,15 @@ msgstr "Polonais" msgid "Turkish" msgstr "Turc" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "Échec de la vérification du processus d'arrière-plan" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "Backend d'email non configuré" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "Échec des contrôles de santé du système" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "Supprimer cet élément" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "Modifier les informations utilisateur" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "Informations système" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "Quantité" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "Numéros de série" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "Emplacement des pièces terminées" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "Référence" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "Pièce" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "Date de création" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "Lien Externe" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "Notes" @@ -809,11 +810,11 @@ msgstr "L'élément de construction doit spécifier une sortie de construction, msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "L'article en stock sélectionné n'a pas été trouvé dans la BOM pour la pièce '{p}'" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "Pieces jointes" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "Détails" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "Enregistrer" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "Disponible" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "jours" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "La pièce doit être unique par son nom, son IPN et sa révision" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "IPN" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index 6caf5cb88d..87d69fb09a 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:40\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -77,7 +77,7 @@ msgstr "" msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "" @@ -122,9 +122,9 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "" @@ -132,34 +132,35 @@ msgstr "" msgid "upload date" msgstr "" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "" @@ -191,15 +192,15 @@ msgstr "" msgid "Turkish" msgstr "" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index f5afd1b0fe..fa6df1a934 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:41\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -77,7 +77,7 @@ msgstr "" msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "" @@ -122,9 +122,9 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "" @@ -132,34 +132,35 @@ msgstr "" msgid "upload date" msgstr "" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "" @@ -191,15 +192,15 @@ msgstr "" msgid "Turkish" msgstr "" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 9b4e347ff7..4bc233a127 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:40\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -77,7 +77,7 @@ msgstr "Wybierz kategorię" msgid "Duplicate serial: {n}" msgstr "Powtórzony numer seryjny: {n}" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "Podano nieprawidłową ilość" @@ -122,9 +122,9 @@ msgstr "Komentarz" msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Użytkownik" @@ -132,34 +132,35 @@ msgstr "Użytkownik" msgid "upload date" msgstr "data przesłania" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Nazwa" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Opis" @@ -191,15 +192,15 @@ msgstr "Polski" msgid "Turkish" msgstr "Turecki" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "Nie skonfigurowano backendu e-mail" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "Usuń element" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "Zaznacz pole aby potwierdzić usunięcie elementu" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "Edytuj informacje użytkownika" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "Ustaw hasło" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "Hasła muszą być zgodne" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "Informacja systemowa" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "Data docelowa" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "Ilość" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "Numer seryjny" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "Oznacz budowę jako ukończoną" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "Lokalizacja" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "Lokalizacja ukończonych części" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "Status" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "Zlecenie Budowy" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "Zlecenia budowy" msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "Referencja" @@ -626,27 +627,27 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "Część" @@ -710,16 +711,16 @@ msgstr "Kod partii" msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "Data utworzenia" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "Docelowy termin zakończenia" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "Data zakończenia" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "Odpowiedzialny" @@ -757,26 +758,26 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy" msgid "External Link" msgstr "Link Zewnętrzny" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "Uwagi" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "Budowa" @@ -836,15 +837,13 @@ msgstr "Budowa" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "Element magazynowy" @@ -880,7 +879,7 @@ msgstr "Przydziel zapasy do budowy" msgid "Auto Allocate" msgstr "Automatyczne przypisywanie" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "Cofnij przydział zapasów" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "Numer Seryjny" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "Załączniki" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "Postęp" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "Źródło magazynu" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "Przeznaczenie" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "Nie określono lokalizacji docelowej" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "Partia" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "Utworzony" @@ -1210,7 +1211,7 @@ msgstr "Utworzony" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "Zakończone" @@ -1248,9 +1249,9 @@ msgstr "Szczegóły zlecenia budowy" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "Szczegóły" @@ -1285,8 +1286,8 @@ msgstr "Edytuj uwagi" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "Zapisz" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "Dostępne" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "Szablon" @@ -1608,7 +1609,7 @@ msgstr "Szablon" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "Złożenie" @@ -1617,7 +1618,7 @@ msgstr "Złożenie" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "Komponent" @@ -1626,7 +1627,7 @@ msgstr "Komponent" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "Możliwość zakupu" @@ -1634,7 +1635,7 @@ msgstr "Możliwość zakupu" msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "Możliwość sprzedaży" @@ -1643,7 +1644,7 @@ msgstr "Możliwość sprzedaży" msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "Możliwość śledzenia" @@ -1652,7 +1653,7 @@ msgstr "Możliwość śledzenia" msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "Wirtualny" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" -msgstr "Tryb Debugowania" +#: common/models.py:209 +msgid "Show Price in Forms" +msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "Tryb Debugowania" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:217 +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "Raporty testów" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "dni" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "Grupuj według komponentu" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "Cena" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "Domyślny" @@ -1843,9 +1869,11 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" -msgstr "Wyślik plik" +msgstr "Wyślij plik" #: common/views.py:185 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:583 part/templates/part/bom_upload/select_fields.html:58 @@ -1877,29 +1905,29 @@ msgstr "URL" msgid "Image URL" msgstr "URL zdjęcia" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "Cena jednostkowa" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "Cena jednostkowa" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "Numer producenta" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "MPN" @@ -1952,11 +1980,11 @@ msgstr "Kontakt" msgid "Point of contact" msgstr "Punkt kontaktowy" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "Łącze" @@ -1964,7 +1992,7 @@ msgstr "Łącze" msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "Obraz" @@ -1992,12 +2020,12 @@ msgstr "jest producentem" msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "Część bazowa" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "Wybierz część" @@ -2008,7 +2036,7 @@ msgstr "Wybierz część" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "Producent" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "Część producenta" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "Jednostki" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "Dostawca" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "SKU" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "Część producenta" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "Uwaga" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "Opakowanie" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "wielokrotność" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "Nie określono strony internetowej" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "Klient" @@ -2215,7 +2268,7 @@ msgstr "Usuń części" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "Nowy komponent" @@ -2248,13 +2301,12 @@ msgstr "Eksportuj" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "Komponenty dostawcy" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "Utwórz nowego dostawcę części" @@ -2262,12 +2314,12 @@ msgstr "Utwórz nowego dostawcę części" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "Now dostawca części" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "Dostawcy" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "Stan" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "Usuń" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "Parametry" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "Utwórz nowego dostawcę" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "Dostarczone części" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "Informacja cenowa" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "Edytuj przedział cenowy" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "Producenci" @@ -2533,20 +2600,20 @@ msgstr "Firmy" msgid "New Company" msgstr "Nowa firma" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "Pobierz obraz" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "Edytuj przedział cenowy" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "Etykieta" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "Aktywne" @@ -2662,7 +2737,7 @@ msgstr "Wysokość [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "Filtry" @@ -2696,237 +2771,239 @@ msgstr "Anuluj zamówienie" msgid "Ship order" msgstr "Wyślij zamówienie" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "Wprowadź ilość produktów magazynowych" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "Odniesienie zamówienia" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "Opis Zamówienia" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "Link do zewnętrznej witryny" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "Utworzony przez" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "Notatki do zamówienia" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "odebrane przez" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "Data wydania" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "Data wysyłki" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "wysłane przez" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "Ilość elementów" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "Zamówienie" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "Odebrane" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "Cena zakupu" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "Cena zakupu jednostkowego" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "Cena sprzedaży" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "Jednostkowa cena sprzedaży" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "Linia" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "Komponent" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "Wydany" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "Nowa lokalizacja" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "Wybierz dostawcę" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "Usuń część" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "Otrzymane elementy" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "Cena jednostkowa" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "Kod zamówienia" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "Odbierz" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "Usuń linie" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "Akcje" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "Numer ID" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "Przydzielono" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "Oblicz cenę" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "Nie znaleziono ceny" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "Domyślna lokalizacja" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "Część nadrzędna" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "Podczęść" @@ -3728,7 +3820,7 @@ msgstr "Domyślne słowa kluczowe" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "Wariant" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "Opis części" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "Słowa kluczowe" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "Kategoria" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "IPN" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "Wersja" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "Jednostki" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "Aktywny" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "Wymagane" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "Dane" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "Część 1" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "Część 2" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "Zestawienie materiałowe" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "Wszystkie części" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "Stwórz nową kategorię komponentów" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "Parametry" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "Parametry części" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "Szczegóły części" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index d61e19d068..0b04ba9921 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:41\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -77,7 +77,7 @@ msgstr "Выбрать категорию" msgid "Duplicate serial: {n}" msgstr "Дублировать серийный номер: {n}" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "недопустимое количество" @@ -122,9 +122,9 @@ msgstr "Комментарий" msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Пользователь" @@ -132,34 +132,35 @@ msgstr "Пользователь" msgid "upload date" msgstr "дата загрузки" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Название" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Описание" @@ -191,15 +192,15 @@ msgstr "Польский" msgid "Turkish" msgstr "Турецкий" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "Проверка фонового работника не удалась" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "Сервер электронной почты не настроен" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "Ошибка проверки состояния системы InvenTree" @@ -372,27 +373,27 @@ msgstr "Перегрузка не может превысить 100%" msgid "Overage must be an integer value or a percentage" msgstr "Превышение должно быть целым числом или процентом" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "Удалить элемент" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "Установите флажок для подтверждения удаления элемента" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "Редактировать информацию о пользователе" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "Установить пароль" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "Пароли должны совпадать" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "Информация о системе" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "Срок выполнения заказа" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "Целевая дата" @@ -462,22 +463,21 @@ msgstr "Целевая дата для сборки. Сборка будет п #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "Целевая дата для сборки. Сборка будет п #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "Количество" @@ -500,7 +501,7 @@ msgstr "Количество элементов для сборки" msgid "Enter quantity for build output" msgstr "Введите количество для вывода сборки" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "Серийные номера" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "Пометить сборку как завершенную" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "Расположение" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "Расположение укомплектованных частей" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "Статус" @@ -583,16 +584,16 @@ msgstr "Выберите количество запасов для распре #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "Порядок сборки" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "Порядок сборки" msgid "Build Order Reference" msgstr "Ссылка на заказ" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index e30c1ed591..20d48e6e5b 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:41\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -19,11 +19,11 @@ msgstr "" #: InvenTree/api.py:64 msgid "API endpoint not found" -msgstr "API uçnoktası bulunmadı" +msgstr "API uç noktası bulunamadı" #: InvenTree/api.py:110 msgid "No action specified" -msgstr "Hiçbir eylem belirtilmedi" +msgstr "İşlem belirtilmedi" #: InvenTree/api.py:124 msgid "No matching action found" @@ -77,7 +77,7 @@ msgstr "Kategori Seçin" msgid "Duplicate serial: {n}" msgstr "Tekrarlanan seri {n}" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "Geçersiz veri sağlandı" @@ -104,7 +104,7 @@ msgstr "Seri numarası bulunamadı" #: InvenTree/helpers.py:457 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" -msgstr "Benzersiz serinin numaraları ({s}) miktarla eşleşmeli ({q})" +msgstr "Benzersiz seri numaralarının sayısı ({s}) girilen miktarla eşleşmeli ({q})" #: InvenTree/models.py:59 stock/models.py:1763 msgid "Attachment" @@ -120,56 +120,57 @@ msgstr "Yorum" #: InvenTree/models.py:62 msgid "File comment" -msgstr "Yorum" +msgstr "Dosya yorumu" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "Kullanıcı" #: InvenTree/models.py:72 msgid "upload date" -msgstr "Yükleme tarihi" +msgstr "yükleme tarihi" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "Adı" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "Açıklama" #: InvenTree/models.py:115 msgid "Description (optional)" -msgstr "Açıklama(opsiyonel)" +msgstr "Açıklama (isteğe bağlı)" #: InvenTree/models.py:123 msgid "parent" -msgstr "ebeveyn" +msgstr "üst" #: InvenTree/settings.py:503 msgid "English" @@ -191,15 +192,15 @@ msgstr "Polonyaca" msgid "Turkish" msgstr "Türkçe" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "Arka plan çalışanı kontrolü başarısız oldu" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "E-posta arka ucu yapılandırılmadı" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "InvenTree sistem sağlık kontrolü başarısız" @@ -258,79 +259,79 @@ msgstr "Reddedildi" #: InvenTree/status_codes.py:272 msgid "Legacy stock tracking entry" -msgstr "" +msgstr "Eski stok izleme girişi" #: InvenTree/status_codes.py:274 msgid "Stock item created" -msgstr "" +msgstr "Stok kalemi oluşturuldu" #: InvenTree/status_codes.py:276 msgid "Edited stock item" -msgstr "" +msgstr "Düzenlenen stok kalemi" #: InvenTree/status_codes.py:277 msgid "Assigned serial number" -msgstr "" +msgstr "Atanan seri numarası" #: InvenTree/status_codes.py:279 msgid "Stock counted" -msgstr "" +msgstr "Stok sayıldı" #: InvenTree/status_codes.py:280 msgid "Stock manually added" -msgstr "" +msgstr "Stok manuel olarak eklendi" #: InvenTree/status_codes.py:281 msgid "Stock manually removed" -msgstr "" +msgstr "Stok manuel olarak çıkarıldı" #: InvenTree/status_codes.py:283 msgid "Location changed" -msgstr "" +msgstr "Konum değişti" #: InvenTree/status_codes.py:285 msgid "Installed into assembly" -msgstr "" +msgstr "Montajda kullanıldı" #: InvenTree/status_codes.py:286 msgid "Removed from assembly" -msgstr "" +msgstr "Montajdan çıkarıldı" #: InvenTree/status_codes.py:288 msgid "Installed component item" -msgstr "" +msgstr "Bileşen ögesinde kullanıldı" #: InvenTree/status_codes.py:289 msgid "Removed component item" -msgstr "" +msgstr "Bileşen ögesinden çıkarıldı" #: InvenTree/status_codes.py:291 msgid "Split from parent item" -msgstr "" +msgstr "Üst ögeden ayır" #: InvenTree/status_codes.py:292 msgid "Split child item" -msgstr "" +msgstr "Alt ögeyi ayır" #: InvenTree/status_codes.py:294 templates/js/table_filters.js:181 msgid "Sent to customer" -msgstr "" +msgstr "Müşteriye gönderildi" #: InvenTree/status_codes.py:295 msgid "Returned from customer" -msgstr "" +msgstr "Müşteriden geri döndü" #: InvenTree/status_codes.py:297 msgid "Build order output created" -msgstr "" +msgstr "Yapım emri çıktısı oluşturuldu" #: InvenTree/status_codes.py:298 msgid "Build order output completed" -msgstr "" +msgstr "Yapım emri çıktısı tamamlandı" #: InvenTree/status_codes.py:300 msgid "Received against purchase order" -msgstr "" +msgstr "Satın alma emri karşılığında alındı" #: InvenTree/status_codes.py:315 msgid "Production" @@ -338,11 +339,11 @@ msgstr "Üretim" #: InvenTree/validators.py:22 msgid "Not a valid currency code" -msgstr "Geçerli para birimi yok" +msgstr "Geçerli bir para birimi kodu değil" #: InvenTree/validators.py:50 msgid "Invalid character in part name" -msgstr "Parça adında geçersiniz karakter bulunuyor" +msgstr "Parça adında geçersiz karakter" #: InvenTree/validators.py:63 #, python-brace-format @@ -353,131 +354,130 @@ msgstr "IPN regex kalıbıyla eşleşmelidir {pat}" #: InvenTree/validators.py:105 #, python-brace-format msgid "Reference must match pattern {pattern}" -msgstr "" +msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli" #: InvenTree/validators.py:113 #, python-brace-format msgid "Illegal character in name ({x})" -msgstr "" +msgstr "({x}) adında geçersiz karakter" #: InvenTree/validators.py:132 InvenTree/validators.py:148 msgid "Overage value must not be negative" -msgstr "" +msgstr "Fazlalık değeri negatif olmamalıdır" #: InvenTree/validators.py:150 msgid "Overage must not exceed 100%" -msgstr "" +msgstr "Fazlalık %100'ü geçmemelidir" #: InvenTree/validators.py:157 msgid "Overage must be an integer value or a percentage" -msgstr "" +msgstr "Fazlalık bir tamsayı veya yüzde olmalıdır" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" -msgstr "" +msgstr "Ögeyi Sil" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" -msgstr "" +msgstr "Öge silme işlemini onaylamak için kutuyu işaretleyin" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" -msgstr "" +msgstr "Kullanıcı Bilgisini Düzenle" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" -msgstr "" +msgstr "Şifre Belirle" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" -msgstr "" +msgstr "Parola alanları eşleşmelidir" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" -msgstr "" +msgstr "Sistem Bilgisi" #: barcodes/api.py:53 barcodes/api.py:150 msgid "Must provide barcode_data parameter" -msgstr "" +msgstr "Barcode_data parametresini sağlamalıdır" #: barcodes/api.py:126 msgid "No match found for barcode data" -msgstr "" +msgstr "Barkod verisi için eşleşme bulunamadı" #: barcodes/api.py:128 msgid "Match found for barcode data" -msgstr "" +msgstr "Barkod verisi için eşleşme bulundu" #: barcodes/api.py:153 msgid "Must provide stockitem parameter" -msgstr "" +msgstr "Stok kalemi parametresi sağlamalıdır" #: barcodes/api.py:160 msgid "No matching stock item found" -msgstr "" +msgstr "Eşleşen stok kalemi bulunamadı" #: barcodes/api.py:190 msgid "Barcode already matches StockItem object" -msgstr "" +msgstr "Barkod başka bir stok kalemi nesnesi ile eşleşmektedir" #: barcodes/api.py:194 msgid "Barcode already matches StockLocation object" -msgstr "" +msgstr "Barkod başka bir stok konumu nesnesi ile eşleşmektedir" #: barcodes/api.py:198 msgid "Barcode already matches Part object" -msgstr "" +msgstr "Barkod başka bir parça nesnesi ile eşleşmektedir" #: barcodes/api.py:204 barcodes/api.py:216 msgid "Barcode hash already matches StockItem object" -msgstr "" +msgstr "Barkod karması (hash) zaten stok kalemi nesnesiyle eşleşiyor" #: barcodes/api.py:222 msgid "Barcode associated with StockItem" -msgstr "" +msgstr "Barkod başka bir stok kalemiyle ilişkili" #: build/forms.py:37 msgid "Build Order reference" -msgstr "" +msgstr "Yapım İşi Emri referansı" #: build/forms.py:38 msgid "Order target date" -msgstr "" +msgstr "Emir hedef tarihi" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" -msgstr "" +msgstr "Hedeflenen tarih" #: build/forms.py:43 build/models.py:225 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "" +msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak." #: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1346 #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,266 +486,267 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" -msgstr "" +msgstr "Miktar" #: build/forms.py:49 msgid "Number of items to build" -msgstr "" +msgstr "Yapılacak öge sayısı" #: build/forms.py:91 msgid "Enter quantity for build output" -msgstr "" +msgstr "Yapım işi çıktısı için miktarını girin" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" -msgstr "" +msgstr "Seri Numaraları" #: build/forms.py:97 msgid "Enter serial numbers for build outputs" -msgstr "" +msgstr "Yapım işi çıktısı için seri numaraları girin" #: build/forms.py:103 msgid "Confirm creation of build output" -msgstr "" +msgstr "Yapım işi çıktısının oluşturulmasını onaylayın" #: build/forms.py:124 msgid "Confirm deletion of build output" -msgstr "" +msgstr "Yapım işi çıktısının silinmesini onaylayın" #: build/forms.py:145 msgid "Confirm unallocation of stock" -msgstr "" +msgstr "Stok tahsisinin iptalini onayla" #: build/forms.py:169 msgid "Confirm stock allocation" -msgstr "" +msgstr "Stok tahsisini onayla" #: build/forms.py:186 msgid "Mark build as complete" -msgstr "" +msgstr "Yapım işini tamamlandı olarak işaretle" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" -msgstr "" +msgstr "Konum" #: build/forms.py:211 msgid "Location of completed parts" -msgstr "" +msgstr "Tamamlanmış parçaların konumu" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" -msgstr "" +msgstr "Durum" #: build/forms.py:216 msgid "Build output stock status" -msgstr "" +msgstr "Yapım işi çıktısı stok durumu" #: build/forms.py:223 msgid "Confirm incomplete" -msgstr "" +msgstr "Eksik olarak onayla" #: build/forms.py:224 msgid "Confirm completion with incomplete stock allocation" -msgstr "" +msgstr "Eksik parça tahsisi ile tamamlamayı onayla" #: build/forms.py:227 msgid "Confirm build completion" -msgstr "" +msgstr "Yapım işinin tamamlandığını onaylayın" #: build/forms.py:252 msgid "Confirm cancel" -msgstr "" +msgstr "İptali Onayla" #: build/forms.py:252 build/views.py:66 msgid "Confirm build cancellation" -msgstr "" +msgstr "Yapım işi iptalini onayla" #: build/forms.py:266 msgid "Select quantity of stock to allocate" -msgstr "" +msgstr "Tahsis edilecek stok miktarını seçiniz" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" -msgstr "" +msgstr "Yapım İşi Emri" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" -msgstr "" +msgstr "Yapım İşi Emirleri" #: build/models.py:127 msgid "Build Order Reference" -msgstr "" +msgstr "Yapım İşi Emri Referansı" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" -msgstr "" +msgstr "Referans" #: build/models.py:138 msgid "Brief description of the build" -msgstr "" +msgstr "Yapım işinin kısa açıklaması" #: build/models.py:147 build/templates/build/build_base.html:163 #: build/templates/build/detail.html:77 msgid "Parent Build" -msgstr "" +msgstr "Üst Yapım İşi" #: build/models.py:148 msgid "BuildOrder to which this build is allocated" -msgstr "" +msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" -msgstr "" +msgstr "Parça" #: build/models.py:161 msgid "Select part to build" -msgstr "" +msgstr "Yapım işi için parça seçin" #: build/models.py:166 msgid "Sales Order Reference" -msgstr "" +msgstr "Satış Emri Referansı" #: build/models.py:170 msgid "SalesOrder to which this build is allocated" -msgstr "" +msgstr "Bu yapım işinin tahsis edildiği satış emri" #: build/models.py:175 msgid "Source Location" -msgstr "" +msgstr "Kaynak Konum" #: build/models.py:179 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "" +msgstr "Bu yapım işi için stok alınacak konumu seçin (her hangi bir stok konumundan alınması için boş bırakın)" #: build/models.py:184 msgid "Destination Location" -msgstr "" +msgstr "Hedef Konum" #: build/models.py:188 msgid "Select location where the completed items will be stored" -msgstr "" +msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz" #: build/models.py:192 msgid "Build Quantity" -msgstr "" +msgstr "Yapım İşi Miktarı" #: build/models.py:195 msgid "Number of stock items to build" -msgstr "" +msgstr "Yapım işi stok kalemlerinin sayısı" #: build/models.py:199 msgid "Completed items" -msgstr "" +msgstr "Tamamlanmış ögeler" #: build/models.py:201 msgid "Number of stock items which have been completed" -msgstr "" +msgstr "Tamamlanan stok kalemlerinin sayısı" #: build/models.py:205 part/templates/part/part_base.html:167 msgid "Build Status" -msgstr "" +msgstr "Yapım İşi Durumu" #: build/models.py:209 msgid "Build status code" -msgstr "" +msgstr "Yapım işi durum kodu" #: build/models.py:213 stock/models.py:466 msgid "Batch Code" -msgstr "" +msgstr "Sıra numarası" #: build/models.py:217 msgid "Batch code for this build output" -msgstr "" +msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" -msgstr "" +msgstr "Oluşturulma tarihi" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" -msgstr "" +msgstr "Hedef tamamlama tarihi" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" -msgstr "" +msgstr "Tamamlama tarihi" #: build/models.py:234 msgid "completed by" -msgstr "" +msgstr "tamamlayan" #: build/models.py:242 msgid "Issued by" -msgstr "" +msgstr "Veren" #: build/models.py:243 msgid "User who issued this build order" -msgstr "" +msgstr "Bu yapım işi emrini veren kullanıcı" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" -msgstr "" +msgstr "Sorumlu" #: build/models.py:252 msgid "User responsible for this build order" -msgstr "" +msgstr "Bu yapım işi emrinden sorumlu kullanıcı" #: build/models.py:257 build/templates/build/detail.html:91 #: company/templates/company/manufacturer_part_base.html:79 @@ -755,161 +756,159 @@ msgstr "" #: part/templates/part/detail.html:83 part/templates/part/part_base.html:94 #: stock/models.py:460 stock/templates/stock/item_base.html:345 msgid "External Link" -msgstr "" +msgstr "Harici Bağlantı" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" -msgstr "" +msgstr "Harici URL'ye bağlantı" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" -msgstr "" +msgstr "Notlar" #: build/models.py:263 msgid "Extra build notes" -msgstr "" +msgstr "Yapım işi için ekstra notlar" #: build/models.py:740 msgid "No build output specified" -msgstr "" +msgstr "Yapım işi çıktısı belirtilmedi" #: build/models.py:743 msgid "Build output is already completed" -msgstr "" +msgstr "Yapım işi çıktısı zaten tamamlanmış" #: build/models.py:746 msgid "Build output does not match Build Order" -msgstr "" +msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor" #: build/models.py:1152 msgid "BuildItem must be unique for build, stock_item and install_into" -msgstr "" +msgstr "Yapım işi ögesi; yapım işi, stok kalemi ve kurulacak yer için benzersiz olmalıdır" #: build/models.py:1177 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "" +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:1181 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" -msgstr "" +msgstr "Tahsis edilecek miktar ({n}) mevcut miktarı ({q}) geçmemeli" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" -msgstr "" +msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" -msgstr "" +msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" #: build/models.py:1196 msgid "Quantity must be 1 for serialized stock" -msgstr "" +msgstr "Seri numaralı stok için miktar bir olmalı" #: build/models.py:1256 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" -msgstr "" +msgstr "{p} parçasının malzeme listesindeki seçili stok kalemi bulunamadı" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" -msgstr "" +msgstr "Yapım İşi" #: build/models.py:1317 msgid "Build to allocate parts" -msgstr "" +msgstr "Yapım işi için tahsis edilen parçalar" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" -msgstr "" +msgstr "Stok Kalemi" #: build/models.py:1334 msgid "Source stock item" -msgstr "" +msgstr "Kaynak stok kalemi" #: build/models.py:1347 msgid "Stock quantity to allocate to build" -msgstr "" +msgstr "Yapım işi için tahsis edilen stok miktarı" #: build/models.py:1355 msgid "Install into" -msgstr "" +msgstr "Kurulduğu yer" #: build/models.py:1356 msgid "Destination stock item" -msgstr "" +msgstr "Hedef stok kalemi" #: build/templates/build/allocate.html:7 msgid "Allocate Parts" -msgstr "" +msgstr "Parçaları Tahsis Et" #: build/templates/build/allocate.html:15 msgid "Allocate Stock to Build" -msgstr "" +msgstr "Yapım İşi için Stok Tahsis Et" #: build/templates/build/allocate.html:22 msgid "Allocate stock to build" -msgstr "" +msgstr "Yapım işi için stok tahsis et" #: build/templates/build/allocate.html:23 msgid "Auto Allocate" -msgstr "" +msgstr "Otomatik Tahsis Et" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" -msgstr "" +msgstr "Stok tahsisini kaldır" #: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805 msgid "Unallocate Stock" -msgstr "" +msgstr "Stok Tahsisini Kaldır" #: build/templates/build/allocate.html:29 msgid "Order required parts" -msgstr "" +msgstr "Gerekli parçaları sipariş edin" #: build/templates/build/allocate.html:30 #: company/templates/company/detail_manufacturer_part.html:33 #: company/templates/company/detail_supplier_part.html:32 order/views.py:986 #: part/templates/part/category.html:127 msgid "Order Parts" -msgstr "" +msgstr "Parça Siparişi" #: build/templates/build/allocate.html:36 msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" +msgstr "Takip edilmeyen stok yapım işi emri için tamamen tahsis edildi" #: build/templates/build/allocate.html:40 msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" +msgstr "Takip edilmeyen stok yapım işi emri için tamamen tahsis edilemedi" #: build/templates/build/allocate.html:47 msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" +msgstr "Bu yapım işi emri, herhangi bir takip edilmeyen malzeme listesi öğesine sahip değil" #: build/templates/build/allocation_card.html:21 #: build/templates/build/complete_output.html:46 @@ -917,60 +916,60 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" -msgstr "" +msgstr "Seri Numara" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" -msgstr "" +msgstr "Ekler" #: build/templates/build/auto_allocate.html:9 msgid "Automatically Allocate Stock" -msgstr "" +msgstr "Stoku Otomatik Olarak Tahsis Et" #: build/templates/build/auto_allocate.html:10 msgid "The following stock items will be allocated to the specified build output" -msgstr "" +msgstr "Aşağıdaki stok kalemleri, belirtilen yapım işi çıktısı için tahsis edilecek" #: build/templates/build/auto_allocate.html:37 msgid "No stock items found that can be automatically allocated to this build" -msgstr "" +msgstr "Bu yapım işi için otomatik tahsis edilecek stok kalemleri bulunamadı" #: build/templates/build/auto_allocate.html:39 msgid "Stock items will have to be manually allocated" -msgstr "" +msgstr "Stok kalemleri manuel olarak tahsis edilecek" #: build/templates/build/build_base.html:18 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" -msgstr "" +msgstr "Bu yapım işi emri, %(link)s sipariş emrine tahsis edilmiştir" #: build/templates/build/build_base.html:25 #, python-format msgid "This Build Order is a child of Build Order %(link)s" -msgstr "" +msgstr "Bu yapım işi emri, %(link)s yapım iş emrinin altıdır" #: build/templates/build/build_base.html:32 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Yapım işi tamamlandı olarak işaretlenmeye hazır" #: build/templates/build/build_base.html:37 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Bekleyen çıktılar kaldığı için yapım işi emri tamamlanamıyor" #: build/templates/build/build_base.html:42 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "Gerekli yapım işi miktarı henüz tamamlanmadı" #: build/templates/build/build_base.html:47 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: build/templates/build/build_base.html:75 #: company/templates/company/company_base.html:40 @@ -982,7 +981,7 @@ msgstr "" #: stock/templates/stock/item_base.html:62 #: stock/templates/stock/location.html:31 msgid "Admin view" -msgstr "" +msgstr "Yönetici görünümü" #: build/templates/build/build_base.html:81 #: build/templates/build/build_base.html:150 @@ -993,115 +992,114 @@ msgstr "" #: templates/js/table_filters.js:245 templates/js/table_filters.js:264 #: templates/js/table_filters.js:281 msgid "Overdue" -msgstr "" +msgstr "Vadesi geçmiş" #: build/templates/build/build_base.html:90 msgid "Print actions" -msgstr "" +msgstr "Yazdırma işlemleri" #: build/templates/build/build_base.html:94 msgid "Print Build Order" -msgstr "" +msgstr "Yapım İşi Emrini Yazdır" #: build/templates/build/build_base.html:100 #: build/templates/build/build_base.html:225 msgid "Complete Build" -msgstr "" +msgstr "Tamamlanmış Yapım İşi" #: build/templates/build/build_base.html:105 msgid "Build actions" -msgstr "" +msgstr "Yapım İşi işlemleri" #: build/templates/build/build_base.html:109 msgid "Edit Build" -msgstr "" +msgstr "Yapım İşini Düzenle" #: build/templates/build/build_base.html:111 #: build/templates/build/build_base.html:209 build/views.py:57 msgid "Cancel Build" -msgstr "" +msgstr "Yapım İşini İptal Et" #: build/templates/build/build_base.html:124 #: build/templates/build/detail.html:11 msgid "Build Details" -msgstr "" +msgstr "Yapım İşi Detayları" #: build/templates/build/build_base.html:150 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor" #: build/templates/build/build_base.html:157 #: build/templates/build/detail.html:64 msgid "Progress" -msgstr "" +msgstr "İlerleme" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 msgid "Sales Order" -msgstr "" +msgstr "Sipariş Emri" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:98 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" -msgstr "" +msgstr "Veren" #: build/templates/build/build_base.html:217 msgid "Incomplete Outputs" -msgstr "" +msgstr "Tamamlanmamış Çıktılar" #: build/templates/build/build_base.html:218 msgid "Build Order cannot be completed as incomplete build outputs remain" -msgstr "" +msgstr "Tamamlanmamış yapım işi çıktıları kaldığı için yapım işi emri tamamlanamıyor" #: build/templates/build/build_children.html:10 #: build/templates/build/navbar.html:36 msgid "Child Build Orders" -msgstr "" +msgstr "Alt Yapım İşi Emrileri" #: build/templates/build/build_output.html:15 msgid "Incomplete Build Outputs" -msgstr "" +msgstr "Tamamlanmamış Yapım İşi Çıktıları" #: build/templates/build/build_output.html:22 msgid "Create new build output" -msgstr "" +msgstr "Yeni yapım işi çıktısı oluştur" #: build/templates/build/build_output.html:23 msgid "Create New Output" -msgstr "" +msgstr "Yeni Çıktı Oluştur" #: build/templates/build/build_output.html:36 msgid "Create a new build output" -msgstr "" +msgstr "Yeni bir yapım işi çıktısı oluştur" #: build/templates/build/build_output.html:37 msgid "No incomplete build outputs remain." -msgstr "" +msgstr "Tamamlanmamış yapım işi çıktısı kalmadı." #: build/templates/build/build_output.html:38 msgid "Create a new build output using the button above" -msgstr "" +msgstr "Yukarıdaki düğmeyi kullanarak yeni bir yapım işi çıktısı oluştur" #: build/templates/build/build_output.html:49 msgid "Completed Build Outputs" -msgstr "" +msgstr "Tamamlanmış Yapım İşi Çıktıları" #: build/templates/build/build_output_create.html:7 msgid "The Bill of Materials contains trackable parts" -msgstr "" +msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor" #: build/templates/build/build_output_create.html:8 msgid "Build outputs must be generated individually." -msgstr "" +msgstr "Yapım işi çıktıları ayrı ayrı oluşturulmalıdır." #: build/templates/build/build_output_create.html:9 msgid "Multiple build outputs will be created based on the quantity specified." @@ -1109,11 +1107,11 @@ msgstr "" #: build/templates/build/build_output_create.html:15 msgid "Trackable parts can have serial numbers specified" -msgstr "" +msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı" #: build/templates/build/build_output_create.html:16 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin" #: build/templates/build/cancel.html:5 msgid "Are you sure you wish to cancel this build?" @@ -1121,312 +1119,315 @@ msgstr "" #: build/templates/build/complete.html:8 msgid "Build Order is complete" -msgstr "" +msgstr "Yapım işi emri tamamlandı" #: build/templates/build/complete.html:12 msgid "Build Order is incomplete" -msgstr "" +msgstr "Yapım işi emri eksik" #: build/templates/build/complete.html:15 msgid "Incompleted build outputs remain" -msgstr "" +msgstr "Eksik yapım işi çıktıları kaldı" #: build/templates/build/complete.html:18 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Gerekli yapım işi miktarı tamamlanmadı" #: build/templates/build/complete.html:21 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Gerekli stok tamamen tahsis edilemedi" #: build/templates/build/complete_output.html:10 msgid "Stock allocation is complete for this output" -msgstr "" +msgstr "Bu çıktı için stok tahsisi tamamlandı" #: build/templates/build/complete_output.html:14 msgid "Stock allocation is incomplete" -msgstr "" +msgstr "Stok tahsisi tamamlanmamış" #: build/templates/build/complete_output.html:20 msgid "tracked parts have not been fully allocated" -msgstr "" +msgstr "takip edilebilir parçalar tamamen tahsis edilemedi" #: build/templates/build/complete_output.html:41 msgid "The following items will be created" -msgstr "" +msgstr "Aşağıdaki ögeler oluşturulacak" #: build/templates/build/create_build_item.html:7 msgid "Select a stock item to allocate to the selected build output" -msgstr "" +msgstr "Seçili yapım işi emri için tahsis edilecek bir stok kalemi seçiniz" #: build/templates/build/create_build_item.html:11 #, python-format msgid "The allocated stock will be installed into the following build output:
%(output)s" -msgstr "" +msgstr "Tahsis edilen stok bu yapım işi çıktısının kurulmasında kullanılacak:
%(output)s" #: build/templates/build/create_build_item.html:17 #, python-format msgid "No stock available for %(part)s" -msgstr "" +msgstr "%(part)s için mevcut stok yok" #: build/templates/build/delete_build_item.html:8 msgid "Are you sure you want to unallocate this stock?" -msgstr "" +msgstr "Bu stokun tahsisinin iptal etmek istediğinizden emin misiniz?" #: build/templates/build/delete_build_item.html:11 msgid "The selected stock will be unallocated from the build output" -msgstr "" +msgstr "Bu yapım işi için seçili stok tahsisi iptal edilecek" #: build/templates/build/detail.html:35 msgid "Stock Source" -msgstr "" +msgstr "Stok Kaynağı" #: build/templates/build/detail.html:40 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "Stok herhangi bir konumdan alınabilir." -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" -msgstr "" +msgstr "Hedef" #: build/templates/build/detail.html:53 msgid "Destination location not specified" -msgstr "" +msgstr "Hedef konumu belirtilmedi" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" -msgstr "" +msgstr "Toplu" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" -msgstr "" +msgstr "Oluşturuldu" #: build/templates/build/detail.html:127 msgid "No target date set" -msgstr "" +msgstr "Hedef tarih ayarlanmadı" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" -msgstr "" +msgstr "Tamamlandı" #: build/templates/build/detail.html:136 msgid "Build not complete" -msgstr "" +msgstr "Yapım İşi tamamlanmadı" #: build/templates/build/edit_build_item.html:7 msgid "Alter the quantity of stock allocated to the build output" -msgstr "" +msgstr "Yapım işi çıktısına tahsis edilen stok miktarını değiştir" #: build/templates/build/index.html:28 build/views.py:678 msgid "New Build Order" -msgstr "" +msgstr "Yeni Yapım İşi Emri" #: build/templates/build/index.html:37 build/templates/build/index.html:38 msgid "Print Build Orders" -msgstr "" +msgstr "Yapım İşi Emirlerini Yazdır" #: build/templates/build/index.html:43 #: order/templates/order/purchase_orders.html:27 #: order/templates/order/sales_orders.html:27 msgid "Display calendar view" -msgstr "" +msgstr "Takvim görünümünü görüntüle" #: build/templates/build/index.html:46 #: order/templates/order/purchase_orders.html:30 #: order/templates/order/sales_orders.html:30 msgid "Display list view" -msgstr "" +msgstr "Liste görünümünü görüntüle" #: build/templates/build/navbar.html:12 msgid "Build Order Details" -msgstr "" +msgstr "Yapım İşi Emri Detayları" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" -msgstr "" +msgstr "Detaylar" #: build/templates/build/navbar.html:21 build/templates/build/navbar.html:24 #: build/views.py:91 msgid "Allocate Stock" -msgstr "" +msgstr "Stok Tahsis Et" #: build/templates/build/navbar.html:29 build/templates/build/navbar.html:32 msgid "Build Outputs" -msgstr "" +msgstr "Yapım İşi Çıktıları" #: build/templates/build/navbar.html:39 msgid "Child Builds" -msgstr "" +msgstr "Alt Yapım İşleri" #: build/templates/build/navbar.html:50 msgid "Build Order Notes" -msgstr "" +msgstr "Yapım İşi Emri Notları" #: build/templates/build/notes.html:12 msgid "Build Notes" -msgstr "" +msgstr "Yapım İşi Notları" #: build/templates/build/notes.html:14 company/templates/company/notes.html:13 #: order/templates/order/order_notes.html:15 #: order/templates/order/sales_order_notes.html:16 #: part/templates/part/notes.html:14 stock/templates/stock/item_notes.html:15 msgid "Edit notes" -msgstr "" +msgstr "Notları Düzenle" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" -msgstr "" +msgstr "Kaydet" #: build/templates/build/unallocate.html:10 msgid "Are you sure you wish to unallocate all stock for this build?" -msgstr "" +msgstr "Bu yapım işi için tahsis edilen tüm stokları kaldırmak istediğinizden emin misiniz?" #: build/templates/build/unallocate.html:12 msgid "All incomplete stock allocations will be removed from the build" -msgstr "" +msgstr "Tüm eksik stok tahsisleri yapım işinden kaldırılacak" #: build/views.py:77 msgid "Build was cancelled" -msgstr "" +msgstr "Yapım işi iptal edildi" #: build/views.py:138 msgid "Allocated stock to build output" -msgstr "" +msgstr "Yapım işi çıktısına stok tahsis edildi" #: build/views.py:150 msgid "Create Build Output" -msgstr "" +msgstr "Yapım İşi Çıktısı Oluştur" #: build/views.py:168 msgid "Maximum output quantity is " -msgstr "" +msgstr "Maksimum çıktı miktarı " #: build/views.py:184 stock/views.py:1821 msgid "Serial numbers already exist" -msgstr "" +msgstr "Seri numaraları zaten mevcut" #: build/views.py:193 msgid "Serial numbers required for trackable build output" -msgstr "" +msgstr "Seri numaraları takip edilebilir yapım işi çıktıları için gerekli" #: build/views.py:259 msgid "Delete Build Output" -msgstr "" +msgstr "Yapım İşi Çıktısı Sil" #: build/views.py:280 build/views.py:370 msgid "Confirm unallocation of build stock" -msgstr "" +msgstr "Yapım işi stoku tahsisinin iptalini onayla" #: build/views.py:281 build/views.py:371 stock/views.py:425 msgid "Check the confirmation box" -msgstr "" +msgstr "Onay kutusunu işaretleyin" #: build/views.py:293 msgid "Build output does not match build" -msgstr "" +msgstr "Yapım işi çıktısı yapım işi ile eşleşmiyor" #: build/views.py:295 build/views.py:496 msgid "Build output must be specified" -msgstr "" +msgstr "Yapım işi çıktısı belirtilmeli" #: build/views.py:307 msgid "Build output deleted" -msgstr "" +msgstr "Yapım işi çıktısı silindi" #: build/views.py:405 msgid "Complete Build Order" -msgstr "" +msgstr "Tamamlanmış Yapım İşi Emri" #: build/views.py:411 msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" +msgstr "Yapım işi emri tamamlanamadı - eksik çıktılar kaldı" #: build/views.py:422 msgid "Completed build order" -msgstr "" +msgstr "Tamamlanmış yapım işi emri" #: build/views.py:438 msgid "Complete Build Output" -msgstr "" +msgstr "Tamamlanmış Yapım İşi Çıktısı" #: build/views.py:480 msgid "Invalid stock status value selected" -msgstr "" +msgstr "Geçersiz stok durum değeri seçildi" #: build/views.py:487 msgid "Quantity to complete cannot exceed build output quantity" -msgstr "" +msgstr "Tamamlanacak miktar yapım işi çıktı miktarını aşamaz" #: build/views.py:493 msgid "Confirm completion of incomplete build" -msgstr "" +msgstr "Eksik yapım işinin tamamlandığını onaylayın" #: build/views.py:592 msgid "Build output completed" -msgstr "" +msgstr "Yapım işi çıktısı tamamlandı" #: build/views.py:732 msgid "Created new build" -msgstr "" +msgstr "Yeni yapım işi oluşturuldu" #: build/views.py:753 msgid "Edit Build Order Details" -msgstr "" +msgstr "Yapım İşi Emri Detaylarını Düzenle" #: build/views.py:786 msgid "Edited build" -msgstr "" +msgstr "Yapım işi düzenlendi" #: build/views.py:795 msgid "Delete Build Order" -msgstr "" +msgstr "Yapım İşi Emrini Sil" #: build/views.py:810 msgid "Removed parts from build allocation" -msgstr "" +msgstr "Yapım işinden tahsis edilen parçalar çıkarıldı" #: build/views.py:822 msgid "Allocate stock to build output" -msgstr "" +msgstr "Yapım işi çıktısına stok tahsis edildi" #: build/views.py:865 msgid "Item must be currently in stock" -msgstr "" +msgstr "Öge stokta bulunmalı" #: build/views.py:871 msgid "Stock item is over-allocated" -msgstr "" +msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" -msgstr "" +msgstr "Mevcut" #: build/views.py:874 msgid "Stock item must be selected" -msgstr "" +msgstr "Stok kalemi seçilmeli" #: build/views.py:1037 msgid "Edit Stock Allocation" -msgstr "" +msgstr "Stok Tahsisini Düzenle" #: build/views.py:1041 msgid "Updated Build Item" -msgstr "" +msgstr "Yapım İşi Ögesini Güncelle" #: build/views.py:1070 msgid "Add Build Order Attachment" @@ -1435,56 +1436,56 @@ msgstr "" #: build/views.py:1083 order/views.py:115 order/views.py:167 part/views.py:173 #: stock/views.py:277 msgid "Added attachment" -msgstr "" +msgstr "Ek eklendi" #: build/views.py:1119 order/views.py:194 order/views.py:215 msgid "Edit Attachment" -msgstr "" +msgstr "Ek Düzenle" #: build/views.py:1129 order/views.py:198 order/views.py:219 msgid "Attachment updated" -msgstr "" +msgstr "Ek güncellendi" #: build/views.py:1139 order/views.py:234 order/views.py:248 msgid "Delete Attachment" -msgstr "" +msgstr "Eki Sil" #: build/views.py:1144 order/views.py:240 order/views.py:254 stock/views.py:333 msgid "Deleted attachment" -msgstr "" +msgstr "Eki sil" #: common/files.py:64 msgid "Unsupported file format: {ext.upper()}" -msgstr "" +msgstr "Desteklenmeyen dosya formatı: {ext.upper()}" #: common/files.py:69 msgid "Error reading file (invalid format)" -msgstr "" +msgstr "Dosya okurken hata (geçersiz biçim)" #: common/files.py:71 msgid "Error reading file (incorrect dimension)" -msgstr "" +msgstr "Dosya okurken hata (hatalı ölçüler)" #: common/files.py:73 msgid "Error reading file (data could be corrupted)" -msgstr "" +msgstr "Dosya okurken hata (veri bozulmuş olabilir)" #: common/forms.py:39 templates/attachment_table.html:15 msgid "File" -msgstr "" +msgstr "Dosya" #: common/forms.py:40 msgid "Select file to upload" -msgstr "" +msgstr "Yüklenecek dosyayı seç" #: common/forms.py:55 msgid "{name.title()} File" -msgstr "" +msgstr "{name.title()} Dosya" #: common/forms.py:56 #, python-brace-format msgid "Select {name} file to upload" -msgstr "" +msgstr "{name} dosyasını yüklemek için seçin" #: common/models.py:59 msgid "InvenTree Instance Name" @@ -1524,7 +1525,7 @@ msgstr "" #: common/models.py:86 msgid "Allow download of remote images and files from external URL" -msgstr "" +msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" #: common/models.py:92 msgid "Barcode Support" @@ -1536,27 +1537,27 @@ msgstr "" #: common/models.py:99 msgid "IPN Regex" -msgstr "" +msgstr "DPN Regex" #: common/models.py:100 msgid "Regular expression pattern for matching Part IPN" -msgstr "" +msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)" #: common/models.py:104 msgid "Allow Duplicate IPN" -msgstr "" +msgstr "Yinelenen DPN'ye İzin Ver" #: common/models.py:105 msgid "Allow multiple parts to share the same IPN" -msgstr "" +msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver" #: common/models.py:111 msgid "Allow Editing IPN" -msgstr "" +msgstr "DPN Düzenlemeye İzin Ver" #: common/models.py:112 msgid "Allow changing the IPN value while editing a part" -msgstr "" +msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" #: common/models.py:118 msgid "Copy Part BOM Data" @@ -1584,11 +1585,11 @@ msgstr "" #: common/models.py:139 msgid "Copy Category Parameter Templates" -msgstr "" +msgstr "Kategori Paremetre Sablonu Kopyala" #: common/models.py:140 msgid "Copy category parameter templates when creating a part" -msgstr "" +msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" #: common/models.py:146 msgid "Recent Part Count" @@ -1598,68 +1599,68 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" -msgstr "" +msgstr "Şablon" #: common/models.py:154 msgid "Parts are templates by default" -msgstr "" +msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" -msgstr "" +msgstr "Montaj" #: common/models.py:161 msgid "Parts can be assembled from other components by default" -msgstr "" +msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" -msgstr "" +msgstr "Bileşen" #: common/models.py:168 msgid "Parts can be used as sub-components by default" -msgstr "" +msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" -msgstr "" +msgstr "Satın Alınabilir" #: common/models.py:175 msgid "Parts are purchaseable by default" -msgstr "" +msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" -msgstr "" +msgstr "Satılabilir" #: common/models.py:182 msgid "Parts are salable by default" -msgstr "" +msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" -msgstr "" +msgstr "Takip Edilebilir" #: common/models.py:189 msgid "Parts are trackable by default" -msgstr "" +msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" -msgstr "" +msgstr "Sanal" #: common/models.py:196 msgid "Parts are virtual by default" -msgstr "" +msgstr "Parçalar varsayılan olarak sanaldır" #: common/models.py:202 msgid "Show Quantity in Forms" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" -msgstr "" +msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,9 +1869,11 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" -msgstr "" +msgstr "Dosya Yükle" #: common/views.py:185 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:583 part/templates/part/bom_upload/select_fields.html:58 @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,89 +2048,114 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" -msgstr "" +msgstr "Atanan Stok" #: company/templates/company/company_base.html:9 #: company/templates/company/company_base.html:35 @@ -2122,7 +2175,7 @@ msgstr "" #: company/templates/company/company_base.html:46 order/views.py:311 msgid "Create Purchase Order" -msgstr "" +msgstr "Satın Alma Emri Oluştur" #: company/templates/company/company_base.html:51 msgid "Edit company information" @@ -2165,13 +2218,13 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" -msgstr "" +msgstr "Müşteri" #: company/templates/company/detail_manufacturer_part.html:11 #: templates/InvenTree/search.html:149 @@ -2205,17 +2258,17 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:36 #: company/templates/company/detail_supplier_part.html:35 msgid "Delete parts" -msgstr "" +msgstr "Parçaları sil" #: company/templates/company/detail_manufacturer_part.html:36 #: company/templates/company/detail_supplier_part.html:35 msgid "Delete Parts" -msgstr "" +msgstr "Parçaları Sil" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2237,7 +2290,7 @@ msgstr "" #: company/templates/company/detail_stock.html:10 msgid "Supplier Stock" -msgstr "" +msgstr "Tedarikçi Stoku" #: company/templates/company/detail_stock.html:37 #: company/templates/company/supplier_part_stock.html:34 @@ -2248,26 +2301,25 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" -msgstr "" +msgstr "Tedarikçi Parçaları" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" -msgstr "" +msgstr "Yeni tedarikçi parçası oluştur" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" -msgstr "" +msgstr "Yeni Tedarikçi Parçası" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2287,7 +2339,7 @@ msgstr "" #: company/templates/company/supplier_part_orders.html:17 #: part/templates/part/orders.html:17 part/templates/part/part_base.html:58 msgid "Order part" -msgstr "" +msgstr "Parça siparişi" #: company/templates/company/manufacturer_part_base.html:41 msgid "Edit manufacturer part" @@ -2316,11 +2368,12 @@ msgstr "" #: company/templates/company/manufacturer_part_delete.html:36 #, python-format msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:" -msgstr "" +msgstr "Bu üretici parçası için tanımlanmış %(count)s tedarikçi bulunmaktadır. Bunu silerseniz, aşağıdaki tedarikçi parçaları da silinecektir:" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,16 +2385,16 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" -msgstr "" +msgstr "Stok" #: company/templates/company/manufacturer_part_navbar.html:26 msgid "Manufacturer Part Orders" @@ -2355,16 +2408,30 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/supplier.html:22 msgid "Delete supplier parts" -msgstr "" +msgstr "Tedarikçi parçalarını sil" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,16 +2446,16 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" -msgstr "" +msgstr "Stok Kalemleri" #: company/templates/company/navbar.html:47 #: company/templates/company/navbar.html:56 @@ -2396,25 +2463,25 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 #: users/models.py:45 msgid "Sales Orders" -msgstr "" +msgstr "Satış Emirleri" #: company/templates/company/navbar.html:50 #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 #: users/models.py:44 msgid "Purchase Orders" -msgstr "" +msgstr "Satın Alma Emirleri" #: company/templates/company/notes.html:11 msgid "Company Notes" @@ -2423,59 +2490,59 @@ msgstr "" #: company/templates/company/purchase_orders.html:18 #: order/templates/order/purchase_orders.html:20 msgid "Create new purchase order" -msgstr "" +msgstr "Yeni satın alma emri oluştur" #: company/templates/company/purchase_orders.html:19 #: order/templates/order/purchase_orders.html:21 msgid "New Purchase Order" -msgstr "" +msgstr "Yeni Satın Alma Emri" #: company/templates/company/sales_orders.html:19 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "" +msgstr "Yeni satış emri oluştur" #: company/templates/company/sales_orders.html:20 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "" +msgstr "Yeni Satış Emri" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" -msgstr "" +msgstr "Tedarikçi Parçası" #: company/templates/company/supplier_part_base.html:40 msgid "Edit supplier part" -msgstr "" +msgstr "Tedarikçi parçasını düzenle" #: company/templates/company/supplier_part_base.html:44 msgid "Delete supplier part" -msgstr "" +msgstr "Tedarikçi parçasını sil" #: company/templates/company/supplier_part_base.html:56 #: company/templates/company/supplier_part_detail.html:10 msgid "Supplier Part Details" -msgstr "" +msgstr "Tedarikçi Parçası Detayları" #: company/templates/company/supplier_part_delete.html:5 msgid "Are you sure you want to delete the following Supplier Parts?" -msgstr "" +msgstr "Aşağıdaki Tedarikçi Parçalarını silmek istediğinizden emin misin?" #: company/templates/company/supplier_part_navbar.html:12 #: company/templates/company/supplier_part_stock.html:10 msgid "Supplier Part Stock" -msgstr "" +msgstr "Tedarikçi Parça Stoku" #: company/templates/company/supplier_part_navbar.html:19 #: company/templates/company/supplier_part_orders.html:10 msgid "Supplier Part Orders" -msgstr "" +msgstr "Tedarikçi Parçası Emirleri" #: company/templates/company/supplier_part_navbar.html:26 msgid "Supplier Part Pricing" -msgstr "" +msgstr "Tedarikçi Parçası Fiyatlandırması" #: company/templates/company/supplier_part_navbar.html:29 msgid "Pricing" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,22 +2600,22 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" -msgstr "" +msgstr "Sağlanan URL geçerli bir resim dosyası değil" #: company/views.py:243 msgid "Update Company Image" @@ -2594,57 +2661,65 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" #: label/api.py:56 report/api.py:201 msgid "No valid objects provided to template" -msgstr "" +msgstr "Şablon için geçerli bir nesne sağlanmadı" #: label/models.py:103 msgid "Label name" -msgstr "" +msgstr "Etiket adı" #: label/models.py:110 msgid "Label description" -msgstr "" +msgstr "Etiket tanımı" #: label/models.py:117 stock/forms.py:202 msgid "Label" -msgstr "" +msgstr "Etiket" #: label/models.py:118 msgid "Label template file" -msgstr "" +msgstr "Etiket şablon listesi" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" #: label/models.py:125 msgid "Label template is enabled" -msgstr "" +msgstr "Etiket sablonu etkinleştirildi" #: label/models.py:130 msgid "Width [mm]" @@ -2652,7 +2727,7 @@ msgstr "" #: label/models.py:131 msgid "Label width, specified in mm" -msgstr "" +msgstr "Etiket genişliği mm olarak belirtilmeli" #: label/models.py:137 msgid "Height [mm]" @@ -2660,22 +2735,22 @@ msgstr "" #: label/models.py:138 msgid "Label height, specified in mm" -msgstr "" +msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" -msgstr "" +msgstr "Dosya Adı Deseni" #: label/models.py:145 msgid "Pattern for generating label filenames" -msgstr "" +msgstr "Etiket dosya adları oluşturma için desen" #: label/models.py:244 label/models.py:297 msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,239 +2771,241 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" -msgstr "" +msgstr "Parçaları bu konuma alın" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 -msgid "Enter stock item serial numbers" -msgstr "" - #: order/forms.py:242 +msgid "Enter stock item serial numbers" +msgstr "Stok kalemi seri numaları girin" + +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "" +msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" -msgstr "" +msgstr "Seri numaralı stok kalemi için miktar bir olmalı" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" -msgstr "" +msgstr "Stok tahsis miktarını girin" #: order/templates/order/delete_attachment.html:5 #: stock/templates/stock/attachment_delete.html:5 @@ -2952,10 +3029,10 @@ msgstr "" #: order/templates/order/order_base.html:64 msgid "Export order to file" -msgstr "" +msgstr "Emiri dosya çıkar" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,16 +3054,16 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" -msgstr "" +msgstr "Yeni Konum" #: order/templates/order/order_base.html:181 #: order/templates/order/purchase_order_detail.html:101 #: stock/templates/stock/location.html:42 msgid "Create new stock location" -msgstr "" +msgstr "Yeni stok konumu oluştur" #: order/templates/order/order_cancel.html:8 msgid "Cancelling this order means that the order and line items will no longer be editable." @@ -3015,7 +3092,7 @@ msgstr "" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/bom_upload/select_fields.html:21 msgid "Missing selections for the following required columns" -msgstr "" +msgstr "Aşağıdaki gerekli sütunlar için eksik seçimler" #: order/templates/order/order_wizard/match_fields.html:20 msgid "Duplicate selections found, see below. Fix them then retry submitting." @@ -3036,7 +3113,7 @@ msgstr "" #: order/templates/order/order_wizard/match_fields.html:35 #: part/templates/part/bom_upload/select_fields.html:41 msgid "File Fields" -msgstr "" +msgstr "Dosya Alanları" #: order/templates/order/order_wizard/match_fields.html:42 #: part/templates/part/bom_upload/select_fields.html:47 @@ -3066,11 +3143,11 @@ msgstr "" #: order/templates/order/order_wizard/match_parts.html:28 msgid "Select Supplier Part" -msgstr "" +msgstr "Tedarikçi Parçası Seçin" #: order/templates/order/order_wizard/po_upload.html:11 msgid "Upload File for Purchase Order" -msgstr "" +msgstr "Sipariş Emri için Dosya Yükle" #: order/templates/order/order_wizard/po_upload.html:18 #, python-format @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" -msgstr "" +msgstr "Adım 1/2 - Parça Tedarikçileri Seçin" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,11 +3293,11 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" -msgstr "" +msgstr "Parçalar" #: order/templates/order/receive_parts.html:15 msgid "Select parts to receive against this order" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3254,7 +3346,7 @@ msgstr "" #: part/templates/part/bom_duplicate.html:12 #: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" -msgstr "" +msgstr "Uyarı" #: order/templates/order/sales_order_cancel.html:9 msgid "Cancelling this order means that the order will no longer be editable." @@ -3265,68 +3357,68 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" -msgstr "" +msgstr "İşlemler" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" -msgstr "" +msgstr "Stok tahsisini düzenle" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" -msgstr "" +msgstr "Stok tahsisini sil" #: order/templates/order/sales_order_detail.html:176 msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" -msgstr "" +msgstr "Seri numaralarını tahsis et" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3340,7 +3432,7 @@ msgstr "" #: order/templates/order/sales_order_ship.html:12 msgid "Ensure that the order allocation is correct before shipping the order." -msgstr "" +msgstr "Emri göndermeden önce emir tahsisinin doğru olduğundan emin olun." #: order/templates/order/sales_order_ship.html:18 msgid "Some line items in this order have been over-allocated" @@ -3356,21 +3448,17 @@ msgstr "" #: order/templates/order/so_allocate_by_serial.html:9 msgid "Allocate stock items by serial number" -msgstr "" +msgstr "Seri numarası ile stok kalemlerini tahsis et" #: order/templates/order/so_allocation_delete.html:7 msgid "This action will unallocate the following stock from the Sales Order" -msgstr "" +msgstr "Bu işlem Sipariş Emrinden belirtilen stok kalemleri tahsis edemedi" #: order/templates/order/so_attachments.html:12 #: order/templates/order/so_navbar.html:26 msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,93 +3559,97 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" -msgstr "" +msgstr "Seri Numaralarını Tahsis Et" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format -msgid "{serial} is not in stock" -msgstr "" +msgid "No matching item for serial {serial}" +msgstr "{serial} seri numarası için eşleşen öge bulunamadı" -#: order/views.py:1631 +#: order/views.py:1633 +#, python-brace-format +msgid "{serial} is not in stock" +msgstr "{serial} stokta yok" + +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" -msgstr "" +msgstr "{serial} zaten bir emirde tahsis edilmiş" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" -msgstr "" +msgstr "Tahsis Miktarını Düzenle" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" -msgstr "" +msgstr "Tahsisi Sil" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" -msgstr "" +msgstr "Varsayılan Konum" #: part/bom.py:139 part/templates/part/part_base.html:124 msgid "Available Stock" @@ -3566,23 +3658,23 @@ msgstr "" #: part/bom.py:379 #, python-brace-format msgid "Unsupported file format: {f}" -msgstr "" +msgstr "Geçersiz dosya biçimi: {f}" #: part/bom.py:384 msgid "Error reading BOM file (invalid data)" -msgstr "" +msgstr "Malzeme listesi okurken hata (geçersiz data)" #: part/bom.py:386 msgid "Error reading BOM file (incorrect row size)" -msgstr "" +msgstr "Malzeme listesi okurken hata (geçersiz satır boyutu)" #: part/forms.py:89 stock/forms.py:265 msgid "File Format" -msgstr "" +msgstr "Dosya Biçimi" #: part/forms.py:89 stock/forms.py:265 msgid "Select output file format" -msgstr "" +msgstr "Çıktı dosyası biçimi seçin" #: part/forms.py:91 msgid "Cascading" @@ -3630,9 +3722,9 @@ msgstr "" #: part/forms.py:101 msgid "Include part supplier data in exported BOM" -msgstr "" +msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3658,11 +3750,11 @@ msgstr "" #: part/forms.py:165 msgid "BOM file" -msgstr "" +msgstr "Malzeme Listesi Dosyası" #: part/forms.py:165 msgid "Select BOM file to upload" -msgstr "" +msgstr "Yüklemek için Malzeme Listesi dosyası seçin" #: part/forms.py:184 msgid "Related Part" @@ -3694,21 +3786,21 @@ msgstr "" #: part/forms.py:237 msgid "Include category parameter templates" -msgstr "" +msgstr "Kategori parametre şablonlarını dahil et" #: part/forms.py:242 msgid "Include parent categories parameter templates" -msgstr "" +msgstr "Üst kategorilerin parametre şablonlarını dahil et" #: part/forms.py:322 msgid "Add parameter template to same level categories" -msgstr "" +msgstr "Parametre şablonunu aynı seviyedeki kategorilere ekle" #: part/forms.py:326 msgid "Add parameter template to all categories" -msgstr "" +msgstr "Parametre şablonunu tüm kategorilere ekle" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3718,7 +3810,7 @@ msgstr "" #: part/models.py:73 msgid "Default location for parts in this category" -msgstr "" +msgstr "Bu kategori içindeki parçalar için varsayılan konum" #: part/models.py:76 msgid "Default keywords" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3737,367 +3829,362 @@ msgstr "" #: part/templates/part/category.html:94 templates/InvenTree/search.html:127 #: templates/stats.html:84 users/models.py:39 msgid "Part Categories" -msgstr "" +msgstr "Parça Kategorileri" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" -msgstr "" +msgstr "Sonraki kullanılabilir seri numaraları" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" -msgstr "" +msgstr "Sonraki müsait seri numarası" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" -msgstr "" +msgstr "En son seri numarası" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" -msgstr "" +msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" -msgstr "" +msgstr "Şablon Mu" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" -msgstr "" +msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" -msgstr "" +msgstr "Bu parça başka bir parçanın çeşidi mi?" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" -msgstr "" +msgstr "Çeşidi" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" -msgstr "" +msgstr "DPN" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" -msgstr "" +msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" -msgstr "" +msgstr "Revizyon" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" -msgstr "" +msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" -msgstr "" +msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" -msgstr "" +msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" -msgstr "" +msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" -msgstr "" +msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" -msgstr "" +msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" -msgstr "" +msgstr "Gerekli" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" -msgstr "" +msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" -msgstr "" +msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" -msgstr "" +msgstr "Parametre Şablonu" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "" +msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" -msgstr "" +msgstr "Çeşide İzin Ver" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "" +msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4227,11 +4314,11 @@ msgstr "" #: part/templates/part/bom_upload/upload_file.html:21 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" +msgstr "Malzeme Listesi dosyası gerekli sütün adlarını sağlandığı şekilde içermelidir " #: part/templates/part/bom_upload/upload_file.html:21 msgid "BOM Upload Template" -msgstr "" +msgstr "Malzeme Listesi Şablonu Yükle" #: part/templates/part/bom_upload/upload_file.html:22 msgid "Each part must already exist in the database" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4272,7 +4359,7 @@ msgstr "" #: part/templates/part/category.html:50 part/templates/part/category.html:89 msgid "Category Details" -msgstr "" +msgstr "Kategori Detayları" #: part/templates/part/category.html:55 msgid "Category Path" @@ -4287,11 +4374,11 @@ msgstr "" #: part/templates/part/category_navbar.html:18 #: part/templates/part/subcategory.html:16 msgid "Subcategories" -msgstr "" +msgstr "Alt kategoriler" #: part/templates/part/category.html:84 msgid "Parts (Including subcategories)" -msgstr "" +msgstr "Parçalar (Alt kategoriler dahil)" #: part/templates/part/category.html:113 msgid "Export Part Data" @@ -4299,11 +4386,11 @@ msgstr "" #: part/templates/part/category.html:125 msgid "Set category" -msgstr "" +msgstr "Kategori ayarla" #: part/templates/part/category.html:125 msgid "Set Category" -msgstr "" +msgstr "Kategori Ayarla" #: part/templates/part/category.html:128 msgid "Export Data" @@ -4318,9 +4405,9 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" -msgstr "" +msgstr "Yeni konum oluştur" #: part/templates/part/category.html:214 part/templates/part/category.html:244 msgid "New Category" @@ -4336,7 +4423,7 @@ msgstr "" #: part/templates/part/category.html:251 stock/views.py:1391 msgid "Create new Stock Location" -msgstr "" +msgstr "Yeni Stok konumu oluştur" #: part/templates/part/category_delete.html:5 msgid "Are you sure you want to delete category" @@ -4345,11 +4432,11 @@ msgstr "" #: part/templates/part/category_delete.html:8 #, python-format msgid "This category contains %(count)s child categories" -msgstr "" +msgstr "Bu kategori %(count)s alt kategori içermektedir" #: part/templates/part/category_delete.html:9 msgid "If this category is deleted, these child categories will be moved to the" -msgstr "" +msgstr "Bu kategori silinirse, alt kategoriler taşınacaktır" #: part/templates/part/category_delete.html:11 msgid "category" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,17 +4489,17 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" #: part/templates/part/detail.html:42 part/templates/part/part_base.html:188 msgid "Latest Serial Number" -msgstr "" +msgstr "Son Seri Numarası" #: part/templates/part/detail.html:47 msgid "No serial numbers recorded" -msgstr "" +msgstr "Seri numaraları kaydedildi" #: part/templates/part/detail.html:120 msgid "Stock Expiry Time" @@ -4438,11 +4519,11 @@ msgstr "" #: part/templates/part/detail.html:163 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Bu parça bir şablon parçadır (Bu parçanın çeşitleri yapılabilir)" #: part/templates/part/detail.html:165 msgid "Part is not a template part" -msgstr "" +msgstr "Parça şablon parçası değil" #: part/templates/part/detail.html:173 msgid "Part can be assembled from other parts" @@ -4462,15 +4543,15 @@ msgstr "" #: part/templates/part/detail.html:193 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Parça stoku seri numarası ile takip edilebilir" #: part/templates/part/detail.html:195 msgid "Part stock is not tracked by serial number" -msgstr "" +msgstr "Parça stoku seri numarası ile takip edilemez" #: part/templates/part/detail.html:203 part/templates/part/detail.html:205 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Bu parça harici tedarikçilerden satın alınabilir" #: part/templates/part/detail.html:213 msgid "Part can be sold to customers" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" -msgstr "" +msgstr "Parça Çeşitleri" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" -msgstr "" +msgstr "Çeşitler" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" -msgstr "" +msgstr "Tahsisler" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" -msgstr "" +msgstr "Parça Test Şablonları" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,37 +4755,24 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" #: part/templates/part/params.html:68 msgid "New Template" -msgstr "" +msgstr "Yeni Şablon" #: part/templates/part/params.html:69 msgid "Create New Parameter Template" -msgstr "" +msgstr "Yeni Parametre Şablonu Oluştur" #: part/templates/part/part_app_base.html:12 msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4672,7 +4784,7 @@ msgstr "" #: stock/templates/stock/item_base.html:75 #: stock/templates/stock/location.html:51 msgid "Barcode actions" -msgstr "" +msgstr "Barkod işlemleri" #: part/templates/part/part_base.html:42 #: stock/templates/stock/item_base.html:77 @@ -4684,7 +4796,7 @@ msgstr "" #: stock/templates/stock/item_base.html:93 #: stock/templates/stock/location.html:54 msgid "Print Label" -msgstr "" +msgstr "Etiket Yazdır" #: part/templates/part/part_base.html:48 msgid "Show pricing information" @@ -4696,7 +4808,7 @@ msgstr "" #: part/templates/part/part_base.html:67 msgid "Part actions" -msgstr "" +msgstr "Parça işlemleri" #: part/templates/part/part_base.html:70 msgid "Duplicate part" @@ -4717,7 +4829,7 @@ msgstr "" #: part/templates/part/part_base.html:113 #, python-format msgid "This part is a variant of %(link)s" -msgstr "" +msgstr "Bu parça %(link)s parçasının bir çeşididir" #: part/templates/part/part_base.html:130 templates/js/table_filters.js:161 msgid "In Stock" @@ -4725,11 +4837,11 @@ msgstr "" #: part/templates/part/part_base.html:143 templates/InvenTree/index.html:131 msgid "Required for Build Orders" -msgstr "" +msgstr "Yapım İşi Emirleri için Gerekli" #: part/templates/part/part_base.html:150 msgid "Required for Sales Orders" -msgstr "" +msgstr "Satış Emirleri için Gerekli" #: part/templates/part/part_base.html:157 msgid "Allocated to Orders" @@ -4740,17 +4852,13 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" -msgstr "" +msgstr "Test Şablonu Ekle" #: part/templates/part/part_thumb.html:20 msgid "Select from existing images" @@ -4779,7 +4887,7 @@ msgstr "" #: part/templates/part/partial_delete.html:44 #, 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 "" +msgstr "Bu parçası için tanımlanmış %(count)s tedarikçi bulunmaktadır. Bu parçayı silerseniz, aşağıdaki tedarikçi parçaları da silinecektir:" #: part/templates/part/partial_delete.html:55 #, python-format @@ -4804,29 +4912,29 @@ msgstr "" #: part/templates/part/set_category.html:9 msgid "Set category for the following parts" -msgstr "" +msgstr "Aşağıdaki parçalara kategori ayarla" #: part/templates/part/stock.html:10 msgid "Part Stock" -msgstr "" +msgstr "Parça Stoku" #: part/templates/part/stock.html:16 #, python-format msgid "Showing stock for all variants of %(full_name)s" -msgstr "" +msgstr "%(full_name)s için tüm çeşitlerin stokları gösteriliyor" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" -msgstr "" +msgstr "Stok Yok" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:130 msgid "Low Stock" -msgstr "" +msgstr "Düşük Stok" #: part/templates/part/supplier.html:10 msgid "Part Suppliers" -msgstr "" +msgstr "Parça Tedarikçileri" #: part/templates/part/track.html:10 msgid "Part Tracking" @@ -4838,22 +4946,22 @@ msgstr "" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "" +msgstr "Yeni parça çeşidi oluştur" #: part/templates/part/variant_part.html:10 #, python-format msgid "Create a new variant of template '%(full_name)s'." -msgstr "" +msgstr "%(full_name)s şablonu için yeni bir çeşit oluştur." #: part/templates/part/variants.html:19 msgid "Create new variant" -msgstr "" +msgstr "Yeni çeşit oluştur" #: part/templates/part/variants.html:20 msgid "New Variant" -msgstr "" +msgstr "Yeni Çeşit" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4887,15 +4995,15 @@ msgstr "" #: part/views.py:248 msgid "Create Test Template" -msgstr "" +msgstr "Test Şablonu Oluştur" #: part/views.py:275 msgid "Edit Test Template" -msgstr "" +msgstr "Test Şablonu Düzenle" #: part/views.py:289 msgid "Delete Test Template" -msgstr "" +msgstr "Test Şablonu Sil" #: part/views.py:296 msgid "Set Part Category" @@ -4908,7 +5016,7 @@ msgstr "" #: part/views.py:381 msgid "Create Variant" -msgstr "" +msgstr "Çeşit Oluştur" #: part/views.py:466 msgid "Copied part" @@ -4922,233 +5030,245 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" -msgstr "" +msgstr "Parça Parametre Şablonu Oluştur" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Parça Parametre Şablonu Düzenle" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Parça Parametre Şablonu Sil" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" -msgstr "" +msgstr "Kategori Parametre Şablonu Oluştur" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" -msgstr "" +msgstr "Kategori Parametre Şablonu Düzenle" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" -msgstr "" +msgstr "Kategori Parametre Şablonu Sil" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" -msgstr "" +msgstr "Şablon adı" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" -msgstr "" +msgstr "Rapor şablon dosyası" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" -msgstr "" +msgstr "Rapor şablon tanımı" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" +msgstr "Revizyon numarası raporla (otomatik artış)" + +#: report/models.py:291 +msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:275 +#: report/models.py:298 msgid "Report template is enabled" -msgstr "" +msgstr "Rapor şablonu etkin" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "" +msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" #: report/templates/report/inventree_build_order_base.html:147 msgid "Required For" -msgstr "" +msgstr "İçin Gerekli Olan" #: report/templates/report/inventree_po_report.html:85 #: report/templates/report/inventree_so_report.html:85 @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5189,7 +5309,7 @@ msgstr "" #: stock/api.py:212 #, python-brace-format msgid "Updated stock for {n} items" -msgstr "" +msgstr "{n} öge için stok güncellendi" #: stock/api.py:281 #, python-brace-format @@ -5197,54 +5317,54 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" #: stock/forms.py:115 stock/forms.py:419 msgid "Expiration date for this stock item" -msgstr "" +msgstr "Bu stok kalemi için son kullanma tarihi" #: stock/forms.py:118 msgid "Enter unique serial numbers (or leave blank)" -msgstr "" +msgstr "Benzersiz seri numaraları giriniz (veya boş bırakınız)" #: stock/forms.py:169 msgid "Destination for serialized stock (by default, will remain in current location)" -msgstr "" +msgstr "Seri numaralandırılmış stok için hedef konum(varsayılan olarak, geçerli konumda kalacaktır)" #: stock/forms.py:171 msgid "Serial numbers" -msgstr "" +msgstr "Seri numaraları" #: stock/forms.py:171 msgid "Unique serial numbers (must match quantity)" -msgstr "" +msgstr "Benzersiz seri numaraları (miktar ile eşleşmeli)" #: stock/forms.py:173 stock/forms.py:349 msgid "Add transaction note (optional)" -msgstr "" +msgstr "İşlem notu ekle (isteğe bağlı)" #: stock/forms.py:203 stock/forms.py:259 msgid "Select test report template" -msgstr "" +msgstr "Test raporu şablonu seç" #: stock/forms.py:267 templates/js/table_filters.js:75 #: templates/js/table_filters.js:138 msgid "Include sublocations" -msgstr "" +msgstr "Alt konumları dahil et" #: stock/forms.py:267 msgid "Include stock items in sub locations" -msgstr "" +msgstr "Stok kalemlerine alt konumları dahil et" #: stock/forms.py:302 msgid "Stock item to install" -msgstr "" +msgstr "Kurulacak stok kalemi" #: stock/forms.py:309 msgid "Stock quantity to assign" -msgstr "" +msgstr "Atanacak stok miktarı" #: stock/forms.py:337 msgid "Must not exceed available quantity" @@ -5252,7 +5372,7 @@ msgstr "" #: stock/forms.py:347 msgid "Destination location for uninstalled items" -msgstr "" +msgstr "Sökülen ögeler için hedef konum" #: stock/forms.py:351 msgid "Confirm uninstall" @@ -5260,31 +5380,31 @@ msgstr "" #: stock/forms.py:351 msgid "Confirm removal of installed stock items" -msgstr "" +msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla" #: stock/forms.py:375 msgid "Destination stock location" -msgstr "" +msgstr "Hedef stok konumu" #: stock/forms.py:377 msgid "Add note (required)" -msgstr "" +msgstr "Not ekle (gerekli)" #: stock/forms.py:381 stock/views.py:852 stock/views.py:1051 msgid "Confirm stock adjustment" -msgstr "" +msgstr "Stok ayarlamasını onayla" #: stock/forms.py:381 msgid "Confirm movement of stock items" -msgstr "" +msgstr "Stok kalemlerinin hareketini onaylayın" #: stock/forms.py:383 msgid "Set Default Location" -msgstr "" +msgstr "Varsayılan Konum Ayarla" #: stock/forms.py:383 msgid "Set the destination as the default location for selected parts" -msgstr "" +msgstr "Hedefi seçili parçalar için varsayılan konum olarak ayarla" #: stock/models.py:56 stock/models.py:547 msgid "Owner" @@ -5296,7 +5416,7 @@ msgstr "" #: stock/models.py:275 msgid "StockItem with this serial number already exists" -msgstr "" +msgstr "Bu seri numarasına sahip stok kalemi zaten var" #: stock/models.py:311 #, python-brace-format @@ -5305,11 +5425,11 @@ msgstr "" #: stock/models.py:321 stock/models.py:330 msgid "Quantity must be 1 for item with a serial number" -msgstr "" +msgstr "Seri numarası olan ögenin miktarı bir olmalı" #: stock/models.py:322 msgid "Serial number cannot be set if quantity greater than 1" -msgstr "" +msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" #: stock/models.py:344 msgid "Item cannot belong to itself" @@ -5325,7 +5445,7 @@ msgstr "" #: stock/models.py:399 msgid "Parent Stock Item" -msgstr "" +msgstr "Üst Stok Kalemi" #: stock/models.py:408 msgid "Base part" @@ -5333,11 +5453,11 @@ msgstr "" #: stock/models.py:417 msgid "Select a matching supplier part for this stock item" -msgstr "" +msgstr "Bu stok kalemi için tedarikçi parçası seçin" #: stock/models.py:422 stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" -msgstr "" +msgstr "Stok Konumu" #: stock/models.py:425 msgid "Where is this stock item located?" @@ -5357,7 +5477,7 @@ msgstr "" #: stock/models.py:456 msgid "Serial number for this item" -msgstr "" +msgstr "Bu öge için seri numarası" #: stock/models.py:468 msgid "Batch code for this stock item" @@ -5423,20 +5543,20 @@ msgstr "" #: stock/models.py:1026 msgid "Serial numbers must be a list of integers" -msgstr "" +msgstr "Seri numaraları tam sayı listesi olmalı" #: stock/models.py:1029 msgid "Quantity does not match serial numbers" -msgstr "" +msgstr "Miktar seri numaları ile eşleşmiyor" #: stock/models.py:1036 #, python-brace-format msgid "Serial numbers already exist: {exists}" -msgstr "" +msgstr "Seri numaraları zaten mevcut: {exists}" #: stock/models.py:1194 msgid "StockItem cannot be moved as it is not in stock" -msgstr "" +msgstr "Stok kalemi stokta olmadığı için taşınamaz" #: stock/models.py:1668 msgid "Entry notes" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5503,11 +5623,11 @@ msgstr "" #: stock/templates/stock/item_base.html:84 templates/stock_table.html:31 msgid "Scan to Location" -msgstr "" +msgstr "Konuma Tara" #: stock/templates/stock/item_base.html:91 msgid "Printing actions" -msgstr "" +msgstr "Yazdırma işlemleri" #: stock/templates/stock/item_base.html:95 #: stock/templates/stock/item_tests.html:27 @@ -5516,7 +5636,7 @@ msgstr "" #: stock/templates/stock/item_base.html:104 msgid "Stock adjustment actions" -msgstr "" +msgstr "Stok ayarlama işlemleri" #: stock/templates/stock/item_base.html:108 #: stock/templates/stock/location.html:65 templates/stock_table.html:57 @@ -5533,7 +5653,7 @@ msgstr "" #: stock/templates/stock/item_base.html:117 msgid "Serialize stock" -msgstr "" +msgstr "Stoku seri numarala" #: stock/templates/stock/item_base.html:121 msgid "Transfer stock" @@ -5558,11 +5678,11 @@ msgstr "" #: stock/templates/stock/item_base.html:140 #: stock/templates/stock/location.html:62 msgid "Stock actions" -msgstr "" +msgstr "Stok işlemleri" #: stock/templates/stock/item_base.html:143 msgid "Convert to variant" -msgstr "" +msgstr "Çeşide çevir" #: stock/templates/stock/item_base.html:146 msgid "Duplicate stock item" @@ -5590,7 +5710,7 @@ msgstr "" #: stock/templates/stock/item_base.html:192 msgid "This stock item has not passed all required tests" -msgstr "" +msgstr "Stok kalemi tüm gerekli testleri geçmedi" #: stock/templates/stock/item_base.html:200 #, python-format @@ -5604,7 +5724,7 @@ msgstr "" #: stock/templates/stock/item_base.html:214 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" +msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." #: stock/templates/stock/item_base.html:218 msgid "This stock item cannot be deleted as it has child items" @@ -5618,9 +5738,9 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" -msgstr "" +msgstr "Konum ayarlanmadı" #: stock/templates/stock/item_base.html:296 msgid "Barcode Identifier" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "" +msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "" +msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5671,7 +5795,7 @@ msgstr "" #: stock/templates/stock/item_install.html:7 msgid "Install another StockItem into this item." -msgstr "" +msgstr "Bu ögeye başka bir stok kalemi ekle." #: stock/templates/stock/item_install.html:10 msgid "Stock items can only be installed if they meet the following criteria" @@ -5679,11 +5803,11 @@ msgstr "" #: stock/templates/stock/item_install.html:13 msgid "The StockItem links to a Part which is in the BOM for this StockItem" -msgstr "" +msgstr "Bu stok kalemi, kendi malzeme listesinin bir parçasına bağlıdır" #: stock/templates/stock/item_install.html:14 msgid "The StockItem is currently in stock" -msgstr "" +msgstr "Bu stok kalemi şu anda stokta" #: stock/templates/stock/item_installed.html:11 #: stock/templates/stock/navbar.html:27 @@ -5692,11 +5816,11 @@ msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "" +msgstr "Bu stok kalemi için seri numaralandırılmış ögeler oluştur." #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "" +msgstr "Seri numaralandırılacak miktarı ve benzersiz seri numaralarını seçin." #: stock/templates/stock/item_tests.html:11 #: stock/templates/stock/navbar.html:19 stock/templates/stock/navbar.html:22 @@ -5713,7 +5837,7 @@ msgstr "" #: stock/templates/stock/location.html:20 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "" +msgstr "Bu konumun sahipleri listesinde değilsiniz. Bu stok konumu düzenlenemez." #: stock/templates/stock/location.html:37 msgid "All stock items" @@ -5725,34 +5849,34 @@ msgstr "" #: stock/templates/stock/location.html:71 msgid "Location actions" -msgstr "" +msgstr "Konum işlemleri" #: stock/templates/stock/location.html:73 msgid "Edit location" -msgstr "" +msgstr "Konumu düzenle" #: stock/templates/stock/location.html:75 msgid "Delete location" -msgstr "" +msgstr "Konumu sil" #: stock/templates/stock/location.html:87 msgid "Location Details" -msgstr "" +msgstr "Konum Detayları" #: stock/templates/stock/location.html:92 msgid "Location Path" -msgstr "" +msgstr "Konum Yolu" #: stock/templates/stock/location.html:97 msgid "Location Description" -msgstr "" +msgstr "Konum Tanımı" #: stock/templates/stock/location.html:102 #: stock/templates/stock/location_navbar.html:11 #: stock/templates/stock/location_navbar.html:18 #: stock/templates/stock/sublocation.html:16 msgid "Sublocations" -msgstr "" +msgstr "Alt konumlar" #: stock/templates/stock/location.html:112 msgid "Stock Details" @@ -5761,11 +5885,11 @@ msgstr "" #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279 #: templates/stats.html:97 users/models.py:41 msgid "Stock Locations" -msgstr "" +msgstr "Stok Konumları" #: stock/templates/stock/location_delete.html:7 msgid "Are you sure you want to delete this stock location?" -msgstr "" +msgstr "Bu stok konumunu silmek istediğinizden emin misiniz?" #: stock/templates/stock/navbar.html:11 msgid "Stock Item Tracking" @@ -5801,28 +5925,28 @@ msgstr "" #: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1364 msgid "Convert Stock Item" -msgstr "" +msgstr "Stok Kalemine Dönüştür" #: stock/templates/stock/stockitem_convert.html:8 #, python-format msgid "This stock item is current an instance of %(part)s" -msgstr "" +msgstr "Bu stok kalemi şu anda %(part)s parçasının örneğidir" #: stock/templates/stock/stockitem_convert.html:9 msgid "It can be converted to one of the part variants listed below." -msgstr "" +msgstr "Aşağıda listelenen parça çeşitlerinden birine dönüştürülebilir." #: stock/templates/stock/stockitem_convert.html:14 msgid "This action cannot be easily undone" -msgstr "" +msgstr "Bu işlem kolayca geri alınamaz" #: stock/templates/stock/sublocation.html:23 templates/stock_table.html:37 msgid "Printing Actions" -msgstr "" +msgstr "Yazdırma İşlemleri" #: stock/templates/stock/sublocation.html:27 templates/stock_table.html:41 msgid "Print labels" -msgstr "" +msgstr "Etiketleri yazdır" #: stock/templates/stock/tracking_delete.html:6 msgid "Are you sure you want to delete this stock tracking entry?" @@ -5830,16 +5954,16 @@ msgstr "" #: stock/views.py:123 msgid "Edit Stock Location" -msgstr "" +msgstr "Stok konumunu düzenle" #: stock/views.py:230 stock/views.py:1343 stock/views.py:1465 #: stock/views.py:1830 msgid "Owner is required (ownership control is enabled)" -msgstr "" +msgstr "Sahip gerekli (sahip kontrolü etkinleştirildi)" #: stock/views.py:245 msgid "Stock Location QR code" -msgstr "" +msgstr "Stok Konumu QR Kodu" #: stock/views.py:265 msgid "Add Stock Item Attachment" @@ -5867,7 +5991,7 @@ msgstr "" #: stock/views.py:385 msgid "Specify a valid location" -msgstr "" +msgstr "Geçerli bir konum belirtiniz" #: stock/views.py:396 msgid "Stock item returned from customer" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -5968,7 +6092,7 @@ msgstr "" #: stock/views.py:1107 msgid "No action performed" -msgstr "" +msgstr "Herhangi bir işlem gerçekleştirilmedi" #: stock/views.py:1122 #, python-brace-format @@ -6009,9 +6133,9 @@ msgstr "" #: stock/views.py:1482 msgid "Serialize Stock" -msgstr "" +msgstr "Stoku Seri Numarala" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6025,7 +6149,7 @@ msgstr "" #: stock/views.py:1899 msgid "Delete Stock Location" -msgstr "" +msgstr "Stok Konumunu Sil" #: stock/views.py:1912 msgid "Delete Stock Item" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,13 +6235,13 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" -msgstr "" +msgstr "Stok konumu ayarlanmadı" #: templates/InvenTree/settings/appearance.html:10 msgid "Theme Settings" @@ -6157,25 +6273,25 @@ msgstr "" #: templates/InvenTree/settings/category.html:9 msgid "Category Settings" -msgstr "" +msgstr "Kategori Ayarları" #: templates/InvenTree/settings/category.html:25 msgid "Category Parameter Templates" -msgstr "" +msgstr "Kategori Parametre Şablonu" #: templates/InvenTree/settings/category.html:52 msgid "No category parameter templates found" -msgstr "" +msgstr "Kategori parametre şablonu bulunamadı" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" -msgstr "" +msgstr "Şablonu Düzenle" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" -msgstr "" +msgstr "Şablonu Sil" #: templates/InvenTree/settings/currencies.html:10 msgid "Currency Settings" @@ -6221,13 +6337,13 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" -msgstr "" +msgstr "Parça Parametre Şablonu" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" -msgstr "" +msgstr "Parça parametre şablonu bulunamadı" #: templates/InvenTree/settings/po.html:9 msgid "Purchase Order Settings" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6472,7 +6592,7 @@ msgstr "" #: templates/js/barcode.js:418 msgid "Check Stock Items into Location" -msgstr "" +msgstr "Stok Kalemlerini bu konuma kaydet" #: templates/js/barcode.js:422 templates/js/barcode.js:547 msgid "Check In" @@ -6488,7 +6608,7 @@ msgstr "" #: templates/js/barcode.js:485 msgid "Stock Item already in this location" -msgstr "" +msgstr "Stok kalemi zaten bu konumda" #: templates/js/barcode.js:492 msgid "Added stock item" @@ -6500,13 +6620,13 @@ msgstr "" #: templates/js/barcode.js:542 msgid "Check Into Location" -msgstr "" +msgstr "Konuma Kaydet" #: templates/js/barcode.js:605 msgid "Barcode does not match a valid location" -msgstr "" +msgstr "Barkod geçerli bir konumla eşleşmiyor" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" -msgstr "" +msgstr "Gerekli Parça" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,27 +6740,39 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" -msgstr "" +msgstr "Şablon Parça" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" #: templates/js/filters.js:167 templates/js/filters.js:397 msgid "true" -msgstr "" +msgstr "doğru" #: templates/js/filters.js:171 templates/js/filters.js:398 msgid "false" -msgstr "" +msgstr "yanlış" #: templates/js/filters.js:193 msgid "Select filter" @@ -6656,27 +6796,27 @@ msgstr "" #: templates/js/label.js:11 msgid "Stock item(s) must be selected before printing labels" -msgstr "" +msgstr "Etiket yazdırılmadan önce stok kalemleri seçilmeli" #: templates/js/label.js:29 templates/js/label.js:79 msgid "No Labels Found" -msgstr "" +msgstr "Etiket Bulunamadı" #: templates/js/label.js:30 msgid "No labels found which match selected stock item(s)" -msgstr "" +msgstr "Seçili stok kalemleri için etiket bulunamadı" #: templates/js/label.js:61 msgid "Select Stock Locations" -msgstr "" +msgstr "Stok Konumu Seç" #: templates/js/label.js:62 msgid "Stock location(s) must be selected before printing labels" -msgstr "" +msgstr "Etiket yazdırılmadan önce stok konumları seçilmeli" #: templates/js/label.js:80 msgid "No labels found which match selected stock location(s)" -msgstr "" +msgstr "Seçili konumlarla eşleşen etiket bulunamadı" #: templates/js/label.js:154 msgid "stock items selected" @@ -6684,11 +6824,11 @@ msgstr "" #: templates/js/label.js:162 msgid "Select Label" -msgstr "" +msgstr "Etiket Seç" #: templates/js/label.js:177 msgid "Select Label Template" -msgstr "" +msgstr "Etiket Şablonu Seç" #: templates/js/modals.js:265 msgid "Waiting for server..." @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" -msgstr "" +msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6821,41 +6965,41 @@ msgstr "" #: templates/js/part.js:194 msgid "No variants found" -msgstr "" +msgstr "Çeşit bulunamadı" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" -msgstr "" +msgstr "Sorgu ile eşleşen test şablonu bulunamadı" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6865,11 +7009,11 @@ msgstr "" #: templates/js/report.js:55 msgid "Select Report Template" -msgstr "" +msgstr "Rapor Şablonu Seç" #: templates/js/report.js:70 msgid "Select Test Report Template" -msgstr "" +msgstr "Test Raporu Şablonu Seç" #: templates/js/report.js:99 msgid "Stock item(s) must be selected before printing reports" @@ -6883,7 +7027,7 @@ msgstr "" #: templates/js/report.js:117 msgid "No report templates found which match selected stock item(s)" -msgstr "" +msgstr "Seçili stok kalemleri için rapor şablonu bulunamadı" #: templates/js/report.js:152 msgid "Select Builds" @@ -6895,7 +7039,7 @@ msgstr "" #: templates/js/report.js:170 msgid "No report templates found which match selected build(s)" -msgstr "" +msgstr "Seçili yapım işleri için rapor şablonu bulunamadı" #: templates/js/report.js:205 msgid "Select Parts" @@ -6907,7 +7051,7 @@ msgstr "" #: templates/js/report.js:224 msgid "No report templates found which match selected part(s)" -msgstr "" +msgstr "Seçili parçalar için rapor şablonu bulunamadı" #: templates/js/report.js:259 msgid "Select Purchase Orders" @@ -6919,7 +7063,7 @@ msgstr "" #: templates/js/report.js:278 templates/js/report.js:332 msgid "No report templates found which match selected orders" -msgstr "" +msgstr "Seçili emirler için rapor şablonu bulunamadı" #: templates/js/report.js:313 msgid "Select Sales Orders" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" -msgstr "" +msgstr "konumlar" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" -msgstr "" +msgstr "Tanımsız konum" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" -msgstr "" +msgstr "Konum artık yok" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" -msgstr "" +msgstr "Yeni Konum Oluştur" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" -msgstr "" +msgstr "Seri No" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7115,11 +7259,11 @@ msgstr "" #: templates/js/table_filters.js:55 msgid "Allow Variant Stock" -msgstr "" +msgstr "Çeşit Stokuna İzin Ver" #: templates/js/table_filters.js:76 msgid "Include locations" -msgstr "" +msgstr "Konumları dahil et" #: templates/js/table_filters.js:86 templates/js/table_filters.js:87 #: templates/js/table_filters.js:300 @@ -7128,28 +7272,28 @@ msgstr "" #: templates/js/table_filters.js:97 templates/js/table_filters.js:186 msgid "Is Serialized" -msgstr "" +msgstr "Seri Numaralı" #: templates/js/table_filters.js:100 templates/js/table_filters.js:193 msgid "Serial number GTE" -msgstr "" +msgstr "Seri numarası BvE" #: templates/js/table_filters.js:101 templates/js/table_filters.js:194 msgid "Serial number greater than or equal to" -msgstr "" +msgstr "Seri numarası büyük veya eşit" #: templates/js/table_filters.js:104 templates/js/table_filters.js:197 msgid "Serial number LTE" -msgstr "" +msgstr "Seri numarası KvE" #: templates/js/table_filters.js:105 templates/js/table_filters.js:198 msgid "Serial number less than or equal to" -msgstr "" +msgstr "Seri numarası küçük veya eşit" #: templates/js/table_filters.js:108 templates/js/table_filters.js:109 #: templates/js/table_filters.js:189 templates/js/table_filters.js:190 msgid "Serial number" -msgstr "" +msgstr "Seri numarası" #: templates/js/table_filters.js:113 templates/js/table_filters.js:207 msgid "Batch code" @@ -7177,7 +7321,7 @@ msgstr "" #: templates/js/table_filters.js:139 msgid "Include stock in sublocations" -msgstr "" +msgstr "Alt konumlardaki stoku dahil et" #: templates/js/table_filters.js:144 msgid "Show stock items which are depleted" @@ -7205,11 +7349,11 @@ msgstr "" #: templates/js/table_filters.js:171 msgid "Include Variants" -msgstr "" +msgstr "Çeşitleri Dahil Et" #: templates/js/table_filters.js:172 msgid "Include stock items for variant parts" -msgstr "" +msgstr "Çeşit parçaların stok kalemlerini dahil et" #: templates/js/table_filters.js:176 msgid "Installed" @@ -7241,11 +7385,11 @@ msgstr "" #: templates/js/table_filters.js:301 msgid "Include parts in subcategories" -msgstr "" +msgstr "Alt kategorilerdeki parçaları dahil et" #: templates/js/table_filters.js:305 msgid "Has IPN" -msgstr "" +msgstr "DPN Var" #: templates/js/table_filters.js:306 msgid "Part has internal part number" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7482,7 +7626,7 @@ msgstr "" #: templates/stock_table.html:27 msgid "Barcode Actions" -msgstr "" +msgstr "Barkod İşlemleri" #: templates/stock_table.html:43 msgid "Print test reports" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 9892439445..34dbe857dc 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-16 22:40+0000\n" -"PO-Revision-Date: 2021-06-16 22:41\n" +"POT-Creation-Date: 2021-06-24 21:38+0000\n" +"PO-Revision-Date: 2021-06-24 21:40\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -77,7 +77,7 @@ msgstr "选择分类" msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:384 order/models.py:247 order/models.py:357 +#: InvenTree/helpers.py:384 order/models.py:248 order/models.py:358 #: stock/views.py:1795 msgid "Invalid quantity provided" msgstr "" @@ -122,9 +122,9 @@ msgstr "注释" msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1999 +#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022 #: report/templates/report/inventree_test_report_base.html:91 -#: templates/js/stock.js:1154 +#: templates/js/stock.js:1179 msgid "User" msgstr "用户" @@ -132,34 +132,35 @@ msgstr "用户" msgid "upload date" msgstr "上传日期" -#: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:102 -#: part/models.py:686 part/models.py:2140 part/templates/part/params.html:27 -#: report/models.py:179 templates/InvenTree/search.html:137 -#: templates/InvenTree/search.html:289 templates/js/part.js:118 -#: templates/js/part.js:641 templates/js/stock.js:947 +#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396 +#: label/models.py:102 part/models.py:671 part/models.py:2163 +#: part/templates/part/params.html:27 report/models.py:180 +#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289 +#: templates/js/company.js:235 templates/js/part.js:118 +#: templates/js/part.js:642 templates/js/stock.js:972 msgid "Name" msgstr "名称" #: InvenTree/models.py:114 build/models.py:135 #: build/templates/build/detail.html:21 company/models.py:339 -#: company/models.py:491 company/templates/company/detail.html:27 +#: company/models.py:532 company/templates/company/detail.html:27 #: company/templates/company/manufacturer_part_base.html:72 #: company/templates/company/supplier_part_base.html:71 #: company/templates/company/supplier_part_detail.html:31 label/models.py:109 -#: order/models.py:103 order/templates/order/purchase_order_detail.html:147 -#: part/models.py:710 part/templates/part/detail.html:54 -#: part/templates/part/set_category.html:14 report/models.py:192 -#: report/models.py:505 report/models.py:544 +#: order/models.py:104 order/templates/order/purchase_order_detail.html:147 +#: part/models.py:695 part/templates/part/detail.html:54 +#: part/templates/part/set_category.html:14 report/models.py:193 +#: report/models.py:530 report/models.py:569 #: report/templates/report/inventree_build_order_base.html:118 #: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224 #: templates/InvenTree/search.html:296 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190 -#: templates/js/build.js:746 templates/js/build.js:1014 +#: templates/js/build.js:833 templates/js/build.js:1101 #: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260 -#: templates/js/part.js:437 templates/js/part.js:653 templates/js/part.js:721 -#: templates/js/stock.js:552 templates/js/stock.js:959 -#: templates/js/stock.js:1004 +#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722 +#: templates/js/stock.js:557 templates/js/stock.js:984 +#: templates/js/stock.js:1029 msgid "Description" msgstr "" @@ -191,15 +192,15 @@ msgstr "" msgid "Turkish" msgstr "" -#: InvenTree/status.py:93 +#: InvenTree/status.py:94 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:97 +#: InvenTree/status.py:98 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:100 +#: InvenTree/status.py:101 msgid "InvenTree system health checks failed" msgstr "" @@ -372,27 +373,27 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:605 +#: InvenTree/views.py:608 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:654 +#: InvenTree/views.py:657 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:669 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:672 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:680 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:683 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:699 +#: InvenTree/views.py:702 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:950 templates/navbar.html:95 +#: InvenTree/views.py:953 templates/navbar.html:95 msgid "System Information" msgstr "" @@ -445,11 +446,11 @@ msgid "Order target date" msgstr "" #: build/forms.py:42 build/templates/build/build_base.html:146 -#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144 +#: build/templates/build/detail.html:121 order/forms.py:114 order/forms.py:149 #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:119 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/build.js:793 templates/js/order.js:200 +#: templates/js/build.js:880 templates/js/order.js:200 #: templates/js/order.js:298 msgid "Target Date" msgstr "" @@ -462,22 +463,21 @@ msgstr "" #: build/templates/build/allocation_card.html:23 #: build/templates/build/auto_allocate.html:17 #: build/templates/build/build_base.html:133 -#: build/templates/build/detail.html:31 common/models.py:699 -#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77 -#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262 -#: order/forms.py:279 order/models.py:616 order/models.py:817 +#: build/templates/build/detail.html:31 common/models.py:720 +#: company/forms.py:191 company/templates/company/supplier_part_pricing.html:77 +#: order/forms.py:193 order/forms.py:211 order/forms.py:246 order/forms.py:268 +#: order/forms.py:285 order/models.py:617 order/models.py:841 #: order/templates/order/order_wizard/match_parts.html:29 -#: order/templates/order/order_wizard/select_parts.html:32 +#: order/templates/order/order_wizard/select_parts.html:34 #: order/templates/order/purchase_order_detail.html:179 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:77 #: order/templates/order/sales_order_detail.html:162 -#: order/templates/order/sales_order_detail.html:230 part/forms.py:342 -#: part/forms.py:372 part/forms.py:388 part/models.py:2270 -#: part/templates/part/allocation.html:19 -#: part/templates/part/allocation.html:53 -#: part/templates/part/order_prices.html:175 -#: part/templates/part/part_pricing.html:13 +#: order/templates/order/sales_order_detail.html:234 part/forms.py:342 +#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293 +#: part/templates/part/internal_prices.html:98 +#: part/templates/part/order_prices.html:202 +#: part/templates/part/part_pricing.html:16 #: part/templates/part/sale_prices.html:85 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -486,9 +486,10 @@ msgstr "" #: stock/forms.py:175 stock/forms.py:308 #: stock/templates/stock/item_base.html:255 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 -#: templates/js/bom.js:205 templates/js/build.js:486 templates/js/build.js:1024 -#: templates/js/part.js:795 templates/js/stock.js:1139 -#: templates/js/stock.js:1358 +#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:571 +#: templates/js/build.js:1111 templates/js/order.js:393 +#: templates/js/part.js:796 templates/js/stock.js:1164 +#: templates/js/stock.js:1383 msgid "Quantity" msgstr "" @@ -500,7 +501,7 @@ msgstr "" msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:95 order/forms.py:234 stock/forms.py:118 +#: build/forms.py:95 order/forms.py:240 stock/forms.py:118 msgid "Serial Numbers" msgstr "" @@ -529,12 +530,12 @@ msgid "Mark build as complete" msgstr "" #: build/forms.py:210 build/templates/build/auto_allocate.html:18 -#: order/forms.py:82 stock/forms.py:347 -#: stock/templates/stock/item_base.html:285 +#: stock/forms.py:347 stock/templates/stock/item_base.html:285 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:260 templates/js/barcode.js:363 -#: templates/js/barcode.js:531 templates/js/build.js:500 -#: templates/js/stock.js:639 templates/js/stock.js:1031 +#: templates/js/barcode.js:531 templates/js/build.js:218 +#: templates/js/build.js:585 templates/js/order.js:378 +#: templates/js/stock.js:643 templates/js/stock.js:1056 msgid "Location" msgstr "" @@ -543,13 +544,13 @@ msgid "Location of completed parts" msgstr "" #: build/forms.py:215 build/templates/build/build_base.html:138 -#: build/templates/build/detail.html:59 order/models.py:468 +#: build/templates/build/detail.html:59 order/models.py:469 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:403 templates/InvenTree/search.html:252 -#: templates/js/barcode.js:119 templates/js/build.js:780 +#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252 +#: templates/js/barcode.js:119 templates/js/build.js:867 #: templates/js/order.js:187 templates/js/order.js:285 -#: templates/js/stock.js:626 templates/js/stock.js:1108 -#: templates/js/stock.js:1374 +#: templates/js/stock.js:630 templates/js/stock.js:1133 +#: templates/js/stock.js:1399 msgid "Status" msgstr "" @@ -583,16 +584,16 @@ msgstr "" #: build/models.py:66 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:73 -#: part/templates/part/allocation.html:23 #: report/templates/report/inventree_build_order_base.html:106 +#: templates/js/build.js:195 msgid "Build Order" msgstr "" #: build/models.py:67 build/templates/build/index.html:8 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: order/templates/order/so_navbar.html:19 -#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 -#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183 +#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:57 +#: part/templates/part/navbar.html:60 templates/InvenTree/index.html:183 #: templates/InvenTree/search.html:185 #: templates/InvenTree/settings/tabs.html:34 users/models.py:43 msgid "Build Orders" @@ -602,12 +603,12 @@ msgstr "" msgid "Build Order Reference" msgstr "" -#: build/models.py:128 order/models.py:101 order/models.py:618 +#: build/models.py:128 order/models.py:102 order/models.py:619 #: order/templates/order/purchase_order_detail.html:174 -#: order/templates/order/sales_order_detail.html:225 part/models.py:2279 +#: order/templates/order/sales_order_detail.html:229 part/models.py:2302 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197 -#: templates/js/build.js:575 templates/js/build.js:1018 +#: templates/js/build.js:660 templates/js/build.js:1105 msgid "Reference" msgstr "" @@ -626,27 +627,27 @@ msgstr "" #: build/models.py:153 build/templates/build/auto_allocate.html:16 #: build/templates/build/build_base.html:128 -#: build/templates/build/detail.html:26 company/models.py:622 -#: order/models.py:660 order/models.py:693 -#: order/templates/order/order_wizard/select_parts.html:30 +#: build/templates/build/detail.html:26 company/models.py:663 +#: order/models.py:661 order/models.py:717 +#: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:132 #: order/templates/order/receive_parts.html:19 -#: order/templates/order/sales_order_detail.html:213 part/models.py:321 -#: part/models.py:1967 part/models.py:1979 part/models.py:1997 -#: part/models.py:2072 part/models.py:2168 part/models.py:2254 -#: part/templates/part/part_app_base.html:8 -#: part/templates/part/part_pricing.html:9 part/templates/part/related.html:29 +#: order/templates/order/sales_order_detail.html:214 part/models.py:321 +#: part/models.py:1975 part/models.py:1987 part/models.py:2002 +#: part/models.py:2020 part/models.py:2095 part/models.py:2191 +#: part/models.py:2277 part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29 #: part/templates/part/set_category.html:13 #: report/templates/report/inventree_build_order_base.html:110 #: report/templates/report/inventree_po_report.html:90 #: report/templates/report/inventree_so_report.html:90 #: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210 #: templates/js/barcode.js:362 templates/js/bom.js:163 -#: templates/js/build.js:466 templates/js/build.js:751 -#: templates/js/build.js:991 templates/js/company.js:140 -#: templates/js/company.js:238 templates/js/part.js:241 -#: templates/js/part.js:404 templates/js/stock.js:521 -#: templates/js/stock.js:1346 +#: templates/js/build.js:551 templates/js/build.js:838 +#: templates/js/build.js:1078 templates/js/company.js:140 +#: templates/js/company.js:339 templates/js/part.js:241 +#: templates/js/part.js:404 templates/js/stock.js:526 +#: templates/js/stock.js:1371 msgid "Part" msgstr "" @@ -710,16 +711,16 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:220 order/models.py:107 part/models.py:882 +#: build/models.py:220 order/models.py:108 part/models.py:867 #: part/templates/part/detail.html:126 templates/js/order.js:293 msgid "Creation Date" msgstr "" -#: build/models.py:224 order/models.py:474 +#: build/models.py:224 order/models.py:475 msgid "Target completion date" msgstr "" -#: build/models.py:228 order/models.py:220 templates/js/build.js:798 +#: build/models.py:228 order/models.py:221 templates/js/build.js:885 msgid "Completion Date" msgstr "" @@ -736,9 +737,9 @@ msgid "User who issued this build order" msgstr "" #: build/models.py:251 build/templates/build/build_base.html:184 -#: build/templates/build/detail.html:105 order/models.py:121 +#: build/templates/build/detail.html:105 order/models.py:122 #: order/templates/order/order_base.html:138 -#: order/templates/order/sales_order_base.html:140 part/models.py:886 +#: order/templates/order/sales_order_base.html:140 part/models.py:871 #: report/templates/report/inventree_build_order_base.html:159 msgid "Responsible" msgstr "" @@ -757,26 +758,26 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:258 part/models.py:744 stock/models.py:462 +#: build/models.py:258 part/models.py:729 stock/models.py:462 msgid "Link to external URL" msgstr "" #: build/models.py:262 build/templates/build/navbar.html:53 -#: company/models.py:132 company/models.py:498 +#: company/models.py:132 company/models.py:539 #: company/templates/company/navbar.html:70 -#: company/templates/company/navbar.html:73 order/models.py:125 -#: order/models.py:620 order/templates/order/po_navbar.html:29 -#: order/templates/order/po_navbar.html:32 -#: order/templates/order/purchase_order_detail.html:239 -#: order/templates/order/sales_order_detail.html:278 +#: company/templates/company/navbar.html:73 order/models.py:126 +#: order/models.py:621 order/templates/order/po_navbar.html:38 +#: order/templates/order/po_navbar.html:41 +#: order/templates/order/purchase_order_detail.html:243 +#: order/templates/order/sales_order_detail.html:309 #: order/templates/order/so_navbar.html:33 -#: order/templates/order/so_navbar.html:36 part/models.py:871 -#: part/templates/part/navbar.html:134 +#: order/templates/order/so_navbar.html:36 part/models.py:856 +#: part/templates/part/navbar.html:142 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/models.py:532 stock/models.py:1667 stock/models.py:1769 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 -#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:674 +#: templates/js/bom.js:356 templates/js/stock.js:141 templates/js/stock.js:699 msgid "Notes" msgstr "" @@ -809,11 +810,11 @@ msgstr "" msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:1188 order/models.py:791 +#: build/models.py:1188 order/models.py:815 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:1192 order/models.py:794 +#: build/models.py:1192 order/models.py:818 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -827,7 +828,7 @@ msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" #: build/models.py:1316 stock/templates/stock/item_base.html:317 -#: templates/InvenTree/search.html:183 templates/js/build.js:724 +#: templates/InvenTree/search.html:183 templates/js/build.js:811 #: templates/navbar.html:29 msgid "Build" msgstr "" @@ -836,15 +837,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1333 part/templates/part/allocation.html:18 -#: part/templates/part/allocation.html:24 -#: part/templates/part/allocation.html:31 -#: part/templates/part/allocation.html:49 -#: stock/templates/stock/item_base.html:8 +#: build/models.py:1333 stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:31 #: stock/templates/stock/item_base.html:339 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:841 -#: templates/js/stock.js:1090 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206 +#: templates/js/build.js:211 templates/js/build.js:928 +#: templates/js/order.js:366 templates/js/order.js:371 +#: templates/js/stock.js:1115 msgid "Stock Item" msgstr "" @@ -880,7 +879,7 @@ msgstr "" msgid "Auto Allocate" msgstr "" -#: build/templates/build/allocate.html:25 templates/js/build.js:656 +#: build/templates/build/allocate.html:25 templates/js/build.js:743 msgid "Unallocate stock" msgstr "" @@ -917,15 +916,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:160 #: report/templates/report/inventree_test_report_base.html:75 #: stock/models.py:454 stock/templates/stock/item_base.html:249 -#: templates/js/build.js:484 +#: templates/js/build.js:569 msgid "Serial Number" msgstr "" #: build/templates/build/attachments.html:12 #: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46 -#: order/templates/order/po_navbar.html:26 -#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:125 -#: part/templates/part/navbar.html:128 stock/templates/stock/navbar.html:47 +#: order/templates/order/po_navbar.html:35 +#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:133 +#: part/templates/part/navbar.html:136 stock/templates/stock/navbar.html:47 #: stock/templates/stock/navbar.html:50 msgid "Attachments" msgstr "" @@ -1037,11 +1036,10 @@ msgid "Progress" msgstr "" #: build/templates/build/build_base.html:170 -#: build/templates/build/detail.html:84 order/models.py:691 +#: build/templates/build/detail.html:84 order/models.py:715 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:35 #: order/templates/order/sales_order_ship.html:25 -#: part/templates/part/allocation.html:30 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:279 templates/js/order.js:245 @@ -1185,7 +1183,10 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:46 stock/forms.py:169 stock/forms.py:375 +#: build/templates/build/detail.html:46 order/forms.py:85 order/models.py:678 +#: order/templates/order/purchase_order_detail.html:239 +#: order/templates/order/receive_parts.html:25 stock/forms.py:169 +#: stock/forms.py:375 msgid "Destination" msgstr "" @@ -1194,15 +1195,15 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:70 -#: stock/templates/stock/item_base.html:303 templates/js/stock.js:634 -#: templates/js/stock.js:1381 templates/js/table_filters.js:112 +#: stock/templates/stock/item_base.html:303 templates/js/stock.js:638 +#: templates/js/stock.js:1406 templates/js/table_filters.js:112 #: templates/js/table_filters.js:206 msgid "Batch" msgstr "" #: build/templates/build/detail.html:116 #: order/templates/order/order_base.html:111 -#: order/templates/order/sales_order_base.html:113 templates/js/build.js:788 +#: order/templates/order/sales_order_base.html:113 templates/js/build.js:875 msgid "Created" msgstr "" @@ -1210,7 +1211,7 @@ msgstr "" msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:132 templates/js/build.js:766 +#: build/templates/build/detail.html:132 templates/js/build.js:853 msgid "Completed" msgstr "" @@ -1248,9 +1249,9 @@ msgstr "" #: build/templates/build/navbar.html:15 #: company/templates/company/navbar.html:15 -#: order/templates/order/po_navbar.html:14 -#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:15 -#: templates/js/stock.js:1019 +#: order/templates/order/po_navbar.html:15 +#: order/templates/order/so_navbar.html:15 part/templates/part/navbar.html:17 +#: templates/js/stock.js:1044 msgid "Details" msgstr "" @@ -1285,8 +1286,8 @@ msgstr "" #: build/templates/build/notes.html:26 company/templates/company/notes.html:24 #: order/templates/order/order_notes.html:27 #: order/templates/order/sales_order_notes.html:29 -#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:482 -#: stock/templates/stock/item_base.html:492 +#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487 +#: stock/templates/stock/item_base.html:497 #: stock/templates/stock/item_notes.html:26 msgid "Save" msgstr "" @@ -1411,8 +1412,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:585 -#: templates/js/build.js:848 templates/js/build.js:1031 +#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:670 +#: templates/js/build.js:935 templates/js/build.js:1118 msgid "Available" msgstr "" @@ -1598,8 +1599,8 @@ msgstr "" msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:153 part/models.py:2170 part/templates/part/detail.html:160 -#: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:25 +#: common/models.py:153 part/models.py:2193 part/templates/part/detail.html:160 +#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25 #: templates/js/table_filters.js:315 msgid "Template" msgstr "" @@ -1608,7 +1609,7 @@ msgstr "" msgid "Parts are templates by default" msgstr "" -#: common/models.py:160 part/models.py:834 part/templates/part/detail.html:170 +#: common/models.py:160 part/models.py:819 part/templates/part/detail.html:170 #: templates/js/table_filters.js:128 templates/js/table_filters.js:327 msgid "Assembly" msgstr "" @@ -1617,7 +1618,7 @@ msgstr "" msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:167 part/models.py:840 part/templates/part/detail.html:180 +#: common/models.py:167 part/models.py:825 part/templates/part/detail.html:180 #: templates/js/table_filters.js:331 msgid "Component" msgstr "" @@ -1626,7 +1627,7 @@ msgstr "" msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:174 part/models.py:851 part/templates/part/detail.html:200 +#: common/models.py:174 part/models.py:836 part/templates/part/detail.html:200 msgid "Purchaseable" msgstr "" @@ -1634,7 +1635,7 @@ msgstr "" msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:181 part/models.py:856 part/templates/part/detail.html:210 +#: common/models.py:181 part/models.py:841 part/templates/part/detail.html:210 #: templates/js/table_filters.js:339 msgid "Salable" msgstr "" @@ -1643,7 +1644,7 @@ msgstr "" msgid "Parts are salable by default" msgstr "" -#: common/models.py:188 part/models.py:846 part/templates/part/detail.html:190 +#: common/models.py:188 part/models.py:831 part/templates/part/detail.html:190 #: templates/js/table_filters.js:33 templates/js/table_filters.js:343 msgid "Trackable" msgstr "" @@ -1652,7 +1653,7 @@ msgstr "" msgid "Parts are trackable by default" msgstr "" -#: common/models.py:195 part/models.py:866 part/templates/part/detail.html:150 +#: common/models.py:195 part/models.py:851 part/templates/part/detail.html:150 #: templates/js/table_filters.js:29 msgid "Virtual" msgstr "" @@ -1669,160 +1670,185 @@ msgstr "" msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:209 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:209 +msgid "Show Price in Forms" msgstr "" #: common/models.py:210 -msgid "Generate reports in debug mode (HTML output)" +msgid "Display part price in some forms" msgstr "" #: common/models.py:216 -msgid "Page Size" +msgid "Internal Prices" msgstr "" #: common/models.py:217 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:223 +msgid "Internal Price as BOM-Price" +msgstr "" + +#: common/models.py:224 +msgid "Use the internal price (if set) in BOM-price calculations" +msgstr "" + +#: common/models.py:230 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:231 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:237 +msgid "Page Size" +msgstr "" + +#: common/models.py:238 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:227 +#: common/models.py:248 msgid "Test Reports" msgstr "" -#: common/models.py:228 +#: common/models.py:249 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:234 +#: common/models.py:255 msgid "Stock Expiry" msgstr "" -#: common/models.py:235 +#: common/models.py:256 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:241 +#: common/models.py:262 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:242 +#: common/models.py:263 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:248 +#: common/models.py:269 msgid "Stock Stale Time" msgstr "" -#: common/models.py:249 +#: common/models.py:270 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:251 part/templates/part/detail.html:121 +#: common/models.py:272 part/templates/part/detail.html:121 msgid "days" msgstr "" -#: common/models.py:256 +#: common/models.py:277 msgid "Build Expired Stock" msgstr "" -#: common/models.py:257 +#: common/models.py:278 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:263 +#: common/models.py:284 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:264 +#: common/models.py:285 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:270 +#: common/models.py:291 msgid "Group by Part" msgstr "" -#: common/models.py:271 +#: common/models.py:292 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:277 +#: common/models.py:298 msgid "Recent Stock Count" msgstr "" -#: common/models.py:278 +#: common/models.py:299 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:284 +#: common/models.py:305 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:285 +#: common/models.py:306 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:290 +#: common/models.py:311 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:291 +#: common/models.py:312 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:295 +#: common/models.py:316 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:296 +#: common/models.py:317 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:301 +#: common/models.py:322 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:302 +#: common/models.py:323 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:525 +#: common/models.py:546 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:527 +#: common/models.py:548 msgid "Settings value" msgstr "" -#: common/models.py:562 +#: common/models.py:583 msgid "Must be an integer value" msgstr "" -#: common/models.py:585 +#: common/models.py:606 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:596 +#: common/models.py:617 msgid "Value must be an integer value" msgstr "" -#: common/models.py:619 +#: common/models.py:640 msgid "Key string must be unique" msgstr "" -#: common/models.py:700 company/forms.py:177 +#: common/models.py:721 company/forms.py:192 msgid "Price break quantity" msgstr "" -#: common/models.py:708 company/templates/company/supplier_part_pricing.html:82 +#: common/models.py:729 company/templates/company/supplier_part_pricing.html:82 +#: part/templates/part/internal_prices.html:103 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:271 msgid "Price" msgstr "" -#: common/models.py:709 +#: common/models.py:730 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:798 +#: common/models.py:822 msgid "Default" msgstr "" @@ -1843,7 +1869,9 @@ msgid "Supplied value must be a boolean" msgstr "" #: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42 -#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27 +#: order/templates/order/po_navbar.html:19 +#: order/templates/order/po_navbar.html:22 order/views.py:582 +#: part/templates/part/bom_upload/upload_file.html:27 msgid "Upload File" msgstr "" @@ -1877,29 +1905,29 @@ msgstr "" msgid "Image URL" msgstr "" -#: company/forms.py:118 templates/js/part.js:786 +#: company/forms.py:133 templates/js/part.js:787 msgid "Single Price" msgstr "" -#: company/forms.py:120 +#: company/forms.py:135 msgid "Single quantity price" msgstr "" -#: company/forms.py:128 company/models.py:321 +#: company/forms.py:143 company/models.py:321 msgid "Select manufacturer" msgstr "" -#: company/forms.py:134 company/models.py:328 +#: company/forms.py:149 company/models.py:328 msgid "Manufacturer Part Number" msgstr "" -#: company/forms.py:136 company/models.py:327 +#: company/forms.py:151 company/models.py:327 #: company/templates/company/manufacturer_part_base.html:89 #: company/templates/company/manufacturer_part_detail.html:26 #: company/templates/company/supplier_part_base.html:102 #: company/templates/company/supplier_part_detail.html:35 #: order/templates/order/purchase_order_detail.html:162 part/bom.py:171 -#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307 +#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408 msgid "MPN" msgstr "" @@ -1952,11 +1980,11 @@ msgstr "" msgid "Point of contact" msgstr "" -#: company/models.py:121 company/models.py:333 company/models.py:485 -#: order/models.py:105 part/models.py:743 +#: company/models.py:121 company/models.py:333 company/models.py:526 +#: order/models.py:106 part/models.py:728 #: report/templates/report/inventree_build_order_base.html:165 -#: templates/js/company.js:188 templates/js/company.js:318 -#: templates/js/part.js:497 +#: templates/js/company.js:188 templates/js/company.js:419 +#: templates/js/part.js:498 msgid "Link" msgstr "" @@ -1964,7 +1992,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:129 part/models.py:753 +#: company/models.py:129 part/models.py:738 msgid "Image" msgstr "" @@ -1992,12 +2020,12 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:305 company/models.py:456 stock/models.py:407 +#: company/models.py:305 company/models.py:497 stock/models.py:407 #: stock/templates/stock/item_base.html:235 msgid "Base Part" msgstr "" -#: company/models.py:309 company/models.py:460 order/views.py:1587 +#: company/models.py:309 company/models.py:501 order/views.py:1597 msgid "Select part" msgstr "" @@ -2008,7 +2036,7 @@ msgstr "" #: company/templates/company/supplier_part_detail.html:34 part/bom.py:170 #: part/bom.py:241 stock/templates/stock/item_base.html:352 #: templates/js/company.js:44 templates/js/company.js:165 -#: templates/js/company.js:289 +#: templates/js/company.js:390 msgid "Manufacturer" msgstr "" @@ -2020,87 +2048,112 @@ msgstr "" msgid "Manufacturer part description" msgstr "" -#: company/models.py:466 company/templates/company/detail.html:62 +#: company/models.py:390 company/models.py:520 +#: company/templates/company/manufacturer_part_base.html:6 +#: company/templates/company/manufacturer_part_base.html:19 +#: stock/templates/stock/item_base.html:362 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:397 +msgid "Parameter name" +msgstr "" + +#: company/models.py:403 part/templates/part/params.html:28 +#: report/templates/report/inventree_test_report_base.html:90 +#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 +#: templates/js/company.js:241 templates/js/stock.js:137 +msgid "Value" +msgstr "" + +#: company/models.py:404 +msgid "Parameter value" +msgstr "" + +#: company/models.py:410 part/models.py:813 part/models.py:2165 +#: part/templates/part/detail.html:106 part/templates/part/params.html:29 +#: templates/js/company.js:247 +msgid "Units" +msgstr "" + +#: company/models.py:411 +msgid "Parameter units" +msgstr "" + +#: company/models.py:507 company/templates/company/detail.html:62 #: company/templates/company/supplier_part_base.html:84 -#: company/templates/company/supplier_part_detail.html:25 order/models.py:192 +#: company/templates/company/supplier_part_detail.html:25 order/models.py:193 #: order/templates/order/order_base.html:92 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175 -#: part/bom.py:286 stock/templates/stock/item_base.html:364 -#: templates/js/company.js:48 templates/js/company.js:263 +#: part/bom.py:286 stock/templates/stock/item_base.html:369 +#: templates/js/company.js:48 templates/js/company.js:364 #: templates/js/order.js:170 msgid "Supplier" msgstr "" -#: company/models.py:467 +#: company/models.py:508 msgid "Select supplier" msgstr "" -#: company/models.py:472 company/templates/company/supplier_part_base.html:88 +#: company/models.py:513 company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_detail.html:26 #: order/templates/order/purchase_order_detail.html:153 part/bom.py:176 #: part/bom.py:287 msgid "SKU" msgstr "" -#: company/models.py:473 +#: company/models.py:514 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:479 -#: company/templates/company/manufacturer_part_base.html:6 -#: company/templates/company/manufacturer_part_base.html:19 -#: stock/templates/stock/item_base.html:357 -msgid "Manufacturer Part" -msgstr "" - -#: company/models.py:480 +#: company/models.py:521 msgid "Select manufacturer part" msgstr "" -#: company/models.py:486 +#: company/models.py:527 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:492 +#: company/models.py:533 msgid "Supplier part description" msgstr "" -#: company/models.py:497 company/templates/company/supplier_part_base.html:116 -#: company/templates/company/supplier_part_detail.html:38 part/models.py:2282 +#: company/models.py:538 company/templates/company/supplier_part_base.html:116 +#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "base cost" msgstr "" -#: company/models.py:501 part/models.py:1614 +#: company/models.py:542 part/models.py:1606 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:503 company/templates/company/supplier_part_base.html:109 +#: company/models.py:544 company/templates/company/supplier_part_base.html:109 #: stock/models.py:431 stock/templates/stock/item_base.html:310 -#: templates/js/stock.js:670 +#: templates/js/stock.js:695 msgid "Packaging" msgstr "" -#: company/models.py:503 +#: company/models.py:544 msgid "Part packaging" msgstr "" -#: company/models.py:505 part/models.py:1616 +#: company/models.py:546 part/models.py:1608 msgid "multiple" msgstr "" -#: company/models.py:505 +#: company/models.py:546 msgid "Order multiple" msgstr "" #: company/templates/company/assigned_stock.html:10 #: company/templates/company/navbar.html:62 -#: company/templates/company/navbar.html:65 templates/js/build.js:477 +#: company/templates/company/navbar.html:65 templates/js/build.js:562 msgid "Assigned Stock" msgstr "" @@ -2165,11 +2218,11 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/detail.html:67 order/models.py:463 +#: company/templates/company/detail.html:67 order/models.py:464 #: order/templates/order/sales_order_base.html:94 stock/models.py:449 #: stock/models.py:450 stock/templates/stock/item_base.html:262 #: templates/js/company.js:40 templates/js/order.js:267 -#: templates/js/stock.js:1072 +#: templates/js/stock.js:1097 msgid "Customer" msgstr "" @@ -2215,7 +2268,7 @@ msgstr "" #: company/templates/company/detail_manufacturer_part.html:66 #: company/templates/company/detail_supplier_part.html:66 #: part/templates/part/bom.html:159 part/templates/part/category.html:118 -#: templates/js/stock.js:1287 +#: templates/js/stock.js:1312 msgid "New Part" msgstr "" @@ -2248,13 +2301,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:11 #: company/templates/company/manufacturer_part_navbar.html:11 -#: company/templates/company/manufacturer_part_suppliers.html:10 #: templates/InvenTree/search.html:164 msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_supplier_part.html:21 -#: order/templates/order/order_wizard/select_parts.html:42 +#: order/templates/order/order_wizard/select_parts.html:44 #: order/templates/order/purchase_order_detail.html:50 msgid "Create new supplier part" msgstr "" @@ -2262,12 +2314,12 @@ msgstr "" #: company/templates/company/detail_supplier_part.html:22 #: company/templates/company/manufacturer_part_suppliers.html:17 #: order/templates/order/purchase_order_detail.html:49 -#: part/templates/part/supplier.html:17 templates/js/stock.js:1293 +#: part/templates/part/supplier.html:17 templates/js/stock.js:1318 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail_supplier_part.html:72 -#: company/templates/company/manufacturer_part_suppliers.html:47 +#: company/templates/company/manufacturer_part_suppliers.html:82 #: company/views.py:64 order/templates/order/purchase_orders.html:185 #: part/templates/part/supplier.html:50 msgid "New Supplier" @@ -2319,8 +2371,9 @@ msgid "There are %(count)s suppliers defined for this manufacturer part. If you msgstr "" #: company/templates/company/manufacturer_part_navbar.html:14 -#: company/views.py:63 part/templates/part/navbar.html:84 -#: part/templates/part/navbar.html:87 templates/InvenTree/search.html:316 +#: company/templates/company/manufacturer_part_suppliers.html:10 +#: company/views.py:63 part/templates/part/navbar.html:86 +#: part/templates/part/navbar.html:89 templates/InvenTree/search.html:316 #: templates/navbar.html:35 msgid "Suppliers" msgstr "" @@ -2332,13 +2385,13 @@ msgstr "" #: company/templates/company/manufacturer_part_navbar.html:22 #: company/templates/company/navbar.html:41 #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/navbar.html:36 stock/api.py:54 +#: part/templates/part/navbar.html:38 stock/api.py:54 #: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196 #: templates/InvenTree/search.html:232 #: templates/InvenTree/settings/tabs.html:31 templates/js/part.js:181 -#: templates/js/part.js:305 templates/js/part.js:464 templates/js/stock.js:561 +#: templates/js/part.js:305 templates/js/part.js:465 templates/js/stock.js:566 #: templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2360,11 +2413,25 @@ msgstr "" #: company/templates/company/manufacturer_part_suppliers.html:22 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22 -#: stock/views.py:1002 users/models.py:187 +#: stock/views.py:1002 users/models.py:191 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part_suppliers.html:48 +#: company/templates/company/manufacturer_part_suppliers.html:37 +#: part/templates/part/category_navbar.html:34 +#: part/templates/part/category_navbar.html:37 +#: part/templates/part/navbar.html:24 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:43 +#: part/templates/part/params.html:18 +#: templates/InvenTree/settings/category.html:29 +#: templates/InvenTree/settings/part.html:48 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part_suppliers.html:83 #: part/templates/part/supplier.html:51 msgid "Create new supplier" msgstr "" @@ -2379,13 +2446,13 @@ msgstr "" msgid "Supplied Parts" msgstr "" -#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33 +#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:35 #: stock/templates/stock/location.html:107 #: stock/templates/stock/location.html:122 #: stock/templates/stock/location.html:136 #: stock/templates/stock/location_navbar.html:22 #: stock/templates/stock/location_navbar.html:29 -#: templates/InvenTree/search.html:198 templates/js/stock.js:971 +#: templates/InvenTree/search.html:198 templates/js/stock.js:996 #: templates/stats.html:93 templates/stats.html:102 users/models.py:42 msgid "Stock Items" msgstr "" @@ -2396,7 +2463,7 @@ msgstr "" #: company/templates/company/sales_orders.html:11 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:13 -#: part/templates/part/navbar.html:104 part/templates/part/navbar.html:107 +#: part/templates/part/navbar.html:112 part/templates/part/navbar.html:115 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228 #: templates/InvenTree/search.html:345 #: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46 @@ -2408,7 +2475,7 @@ msgstr "" #: company/templates/company/purchase_orders.html:10 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:13 -#: part/templates/part/navbar.html:90 part/templates/part/navbar.html:93 +#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205 #: templates/InvenTree/search.html:325 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37 @@ -2442,7 +2509,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:7 #: company/templates/company/supplier_part_base.html:20 stock/models.py:416 -#: stock/templates/stock/item_base.html:369 templates/js/company.js:279 +#: stock/templates/stock/item_base.html:374 templates/js/company.js:380 msgid "Supplier Part" msgstr "" @@ -2490,8 +2557,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794 -#: part/templates/part/sale_prices.html:17 part/views.py:2733 +#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855 +#: part/templates/part/sale_prices.html:17 part/views.py:2751 msgid "Add Price Break" msgstr "" @@ -2510,8 +2577,8 @@ msgstr "" msgid "Delete price break" msgstr "" -#: company/views.py:70 part/templates/part/navbar.html:78 -#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:306 +#: company/views.py:70 part/templates/part/navbar.html:80 +#: part/templates/part/navbar.html:83 templates/InvenTree/search.html:306 #: templates/navbar.html:36 msgid "Manufacturers" msgstr "" @@ -2533,20 +2600,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:169 part/views.py:937 +#: company/views.py:169 part/views.py:948 msgid "Download Image" msgstr "" -#: company/views.py:198 part/views.py:969 +#: company/views.py:198 part/views.py:980 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:205 part/views.py:976 +#: company/views.py:205 part/views.py:987 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:214 part/views.py:985 +#: company/views.py:214 part/views.py:996 msgid "Supplied URL is not a valid image file" msgstr "" @@ -2594,27 +2661,35 @@ msgstr "" msgid "Delete Manufacturer Part" msgstr "" -#: company/views.py:528 +#: company/views.py:514 +msgid "Add Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:548 +msgid "Edit Manufacturer Part Parameter" +msgstr "" + +#: company/views.py:588 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:578 templates/js/stock.js:1294 +#: company/views.py:639 templates/js/stock.js:1319 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:722 +#: company/views.py:783 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:799 part/views.py:2737 +#: company/views.py:860 part/views.py:2755 msgid "Added new price break" msgstr "" -#: company/views.py:855 part/views.py:2781 +#: company/views.py:916 part/views.py:2799 msgid "Edit Price Break" msgstr "" -#: company/views.py:870 part/views.py:2795 +#: company/views.py:931 part/views.py:2813 msgid "Delete Price Break" msgstr "" @@ -2638,7 +2713,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:124 report/models.py:274 +#: label/models.py:124 report/models.py:297 msgid "Enabled" msgstr "" @@ -2662,7 +2737,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:144 +#: label/models.py:144 report/models.py:290 msgid "Filename Pattern" msgstr "" @@ -2674,8 +2749,8 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:245 label/models.py:298 report/models.py:294 -#: report/models.py:415 report/models.py:449 +#: label/models.py:245 label/models.py:298 report/models.py:317 +#: report/models.py:440 report/models.py:474 msgid "Filters" msgstr "" @@ -2696,237 +2771,239 @@ msgstr "" msgid "Ship order" msgstr "" -#: order/forms.py:82 +#: order/forms.py:86 msgid "Receive parts to this location" msgstr "" -#: order/forms.py:103 +#: order/forms.py:108 msgid "Purchase Order reference" msgstr "" -#: order/forms.py:110 +#: order/forms.py:115 msgid "Target date for order delivery. Order will be overdue after this date." msgstr "" -#: order/forms.py:138 +#: order/forms.py:143 msgid "Enter sales order number" msgstr "" -#: order/forms.py:145 order/models.py:475 +#: order/forms.py:150 order/models.py:476 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/forms.py:236 +#: order/forms.py:242 msgid "Enter stock item serial numbers" msgstr "" -#: order/forms.py:242 +#: order/forms.py:248 msgid "Enter quantity of stock items" msgstr "" -#: order/models.py:101 +#: order/models.py:102 msgid "Order reference" msgstr "" -#: order/models.py:103 +#: order/models.py:104 msgid "Order description" msgstr "" -#: order/models.py:105 +#: order/models.py:106 msgid "Link to external page" msgstr "" -#: order/models.py:113 part/templates/part/detail.html:132 +#: order/models.py:114 part/templates/part/detail.html:132 msgid "Created By" msgstr "" -#: order/models.py:120 +#: order/models.py:121 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:125 +#: order/models.py:126 msgid "Order notes" msgstr "" -#: order/models.py:184 order/models.py:468 +#: order/models.py:185 order/models.py:469 msgid "Purchase order status" msgstr "" -#: order/models.py:193 +#: order/models.py:194 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:196 order/templates/order/order_base.html:98 +#: order/models.py:197 order/templates/order/order_base.html:98 #: templates/js/order.js:179 msgid "Supplier Reference" msgstr "" -#: order/models.py:196 +#: order/models.py:197 msgid "Supplier order reference code" msgstr "" -#: order/models.py:203 +#: order/models.py:204 msgid "received by" msgstr "" -#: order/models.py:208 +#: order/models.py:209 msgid "Issue Date" msgstr "" -#: order/models.py:209 +#: order/models.py:210 msgid "Date order was issued" msgstr "" -#: order/models.py:214 +#: order/models.py:215 msgid "Target Delivery Date" msgstr "" -#: order/models.py:215 +#: order/models.py:216 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:221 +#: order/models.py:222 msgid "Date order was completed" msgstr "" -#: order/models.py:245 part/views.py:1675 stock/models.py:304 +#: order/models.py:246 part/views.py:1686 stock/models.py:304 #: stock/models.py:1020 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:250 +#: order/models.py:251 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:348 +#: order/models.py:349 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:352 +#: order/models.py:353 msgid "Quantity must be an integer" msgstr "" -#: order/models.py:354 +#: order/models.py:355 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:464 +#: order/models.py:465 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer Reference " msgstr "" -#: order/models.py:470 +#: order/models.py:471 msgid "Customer order reference code" msgstr "" -#: order/models.py:478 templates/js/order.js:303 +#: order/models.py:479 templates/js/order.js:303 msgid "Shipment Date" msgstr "" -#: order/models.py:485 +#: order/models.py:486 msgid "shipped by" msgstr "" -#: order/models.py:529 +#: order/models.py:530 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:616 +#: order/models.py:617 msgid "Item quantity" msgstr "" -#: order/models.py:618 +#: order/models.py:619 msgid "Line item reference" msgstr "" -#: order/models.py:620 +#: order/models.py:621 msgid "Line item notes" msgstr "" -#: order/models.py:646 order/models.py:691 -#: part/templates/part/allocation.html:17 -#: part/templates/part/allocation.html:45 +#: order/models.py:647 order/models.py:715 templates/js/order.js:353 msgid "Order" msgstr "" -#: order/models.py:647 order/templates/order/order_base.html:9 +#: order/models.py:648 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:324 templates/js/order.js:148 -#: templates/js/stock.js:1053 +#: templates/js/stock.js:669 templates/js/stock.js:1078 msgid "Purchase Order" msgstr "" -#: order/models.py:661 +#: order/models.py:662 msgid "Supplier part" msgstr "" -#: order/models.py:664 order/templates/order/order_base.html:131 +#: order/models.py:665 order/templates/order/order_base.html:131 #: order/templates/order/purchase_order_detail.html:219 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:133 msgid "Received" msgstr "" -#: order/models.py:664 +#: order/models.py:665 msgid "Number of items received" msgstr "" -#: order/models.py:671 stock/models.py:542 -#: stock/templates/stock/item_base.html:331 templates/js/stock.js:665 +#: order/models.py:672 stock/models.py:542 +#: stock/templates/stock/item_base.html:331 templates/js/stock.js:690 msgid "Purchase Price" msgstr "" -#: order/models.py:672 +#: order/models.py:673 msgid "Unit purchase price" msgstr "" -#: order/models.py:700 part/templates/part/navbar.html:101 -#: part/templates/part/order_prices.html:82 -#: part/templates/part/part_pricing.html:78 +#: order/models.py:681 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:724 part/templates/part/navbar.html:109 +#: part/templates/part/order_prices.html:107 +#: part/templates/part/part_pricing.html:97 msgid "Sale Price" msgstr "" -#: order/models.py:701 +#: order/models.py:725 msgid "Unit sale price" msgstr "" -#: order/models.py:776 order/models.py:778 +#: order/models.py:800 order/models.py:802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:782 +#: order/models.py:806 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:784 +#: order/models.py:808 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:787 +#: order/models.py:811 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:797 +#: order/models.py:821 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:802 +#: order/models.py:826 msgid "Line" msgstr "" -#: order/models.py:813 +#: order/models.py:837 msgid "Item" msgstr "" -#: order/models.py:814 +#: order/models.py:838 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:817 +#: order/models.py:841 msgid "Enter stock allocation quantity" msgstr "" @@ -2955,7 +3032,7 @@ msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:72 -#: order/templates/order/po_navbar.html:11 +#: order/templates/order/po_navbar.html:12 msgid "Purchase Order Details" msgstr "" @@ -2977,8 +3054,8 @@ msgstr "" #: order/templates/order/order_base.html:180 #: order/templates/order/purchase_order_detail.html:100 #: part/templates/part/category.html:208 part/templates/part/category.html:250 -#: stock/templates/stock/location.html:191 templates/js/stock.js:711 -#: templates/js/stock.js:1299 +#: stock/templates/stock/location.html:191 templates/js/stock.js:736 +#: templates/js/stock.js:1324 msgid "New Location" msgstr "" @@ -3081,28 +3158,32 @@ msgstr "" msgid "Order is already processed. Files cannot be uploaded." msgstr "" -#: order/templates/order/order_wizard/select_parts.html:9 +#: order/templates/order/order_wizard/select_parts.html:11 msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:14 +#: order/templates/order/order_wizard/select_parts.html:16 msgid "Select suppliers" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:18 +#: order/templates/order/order_wizard/select_parts.html:20 msgid "No purchaseable parts selected" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:31 +#: order/templates/order/order_wizard/select_parts.html:33 msgid "Select Supplier" msgstr "" #: order/templates/order/order_wizard/select_parts.html:57 +msgid "No price" +msgstr "" + +#: order/templates/order/order_wizard/select_parts.html:65 #, python-format msgid "Select a supplier for %(name)s" msgstr "" -#: order/templates/order/order_wizard/select_parts.html:69 +#: order/templates/order/order_wizard/select_parts.html:77 #: part/templates/part/set_category.html:32 msgid "Remove part" msgstr "" @@ -3135,15 +3216,20 @@ msgid "Select a purchase order for %(name)s" msgstr "" #: order/templates/order/po_attachments.html:12 -#: order/templates/order/po_navbar.html:23 +#: order/templates/order/po_navbar.html:32 msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_navbar.html:17 +#: order/templates/order/po_lineitem_delete.html:5 +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/po_navbar.html:26 msgid "Received Stock Items" msgstr "" -#: order/templates/order/po_navbar.html:20 +#: order/templates/order/po_navbar.html:29 #: order/templates/order/po_received_items.html:12 msgid "Received Items" msgstr "" @@ -3153,8 +3239,8 @@ msgid "Purchase Order Items" msgstr "" #: order/templates/order/purchase_order_detail.html:24 -#: order/templates/order/sales_order_detail.html:22 order/views.py:1311 -#: order/views.py:1394 +#: order/templates/order/sales_order_detail.html:22 order/views.py:1321 +#: order/views.py:1404 msgid "Add Line Item" msgstr "" @@ -3162,25 +3248,31 @@ msgstr "" msgid "No line items found" msgstr "" +#: order/templates/order/purchase_order_detail.html:142 +#: order/templates/order/sales_order_detail.html:223 +msgid "Total" +msgstr "" + #: order/templates/order/purchase_order_detail.html:191 -#: order/templates/order/sales_order_detail.html:235 +#: order/templates/order/sales_order_detail.html:246 msgid "Unit Price" msgstr "" #: order/templates/order/purchase_order_detail.html:198 +#: order/templates/order/sales_order_detail.html:253 msgid "Total price" msgstr "" -#: order/templates/order/purchase_order_detail.html:251 -#: order/templates/order/sales_order_detail.html:328 +#: order/templates/order/purchase_order_detail.html:255 +#: order/templates/order/sales_order_detail.html:359 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:252 +#: order/templates/order/purchase_order_detail.html:256 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:257 +#: order/templates/order/purchase_order_detail.html:261 msgid "Receive line item" msgstr "" @@ -3201,7 +3293,7 @@ msgstr "" #: part/templates/part/category_navbar.html:29 #: part/templates/part/category_partlist.html:10 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114 -#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:665 +#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666 #: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89 #: users/models.py:40 msgid "Parts" @@ -3216,7 +3308,7 @@ msgid "Order Code" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:136 templates/js/part.js:480 +#: part/templates/part/part_base.html:136 templates/js/part.js:481 msgid "On Order" msgstr "" @@ -3224,11 +3316,11 @@ msgstr "" msgid "Receive" msgstr "" -#: order/templates/order/receive_parts.html:36 +#: order/templates/order/receive_parts.html:37 msgid "Error: Referenced part has been removed" msgstr "" -#: order/templates/order/receive_parts.html:57 +#: order/templates/order/receive_parts.html:61 msgid "Remove line" msgstr "" @@ -3265,17 +3357,17 @@ msgid "Sales Order Items" msgstr "" #: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:365 -#: templates/js/build.js:637 templates/js/build.js:1054 +#: templates/js/build.js:724 templates/js/build.js:1141 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:525 -#: templates/js/build.js:859 +#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:610 +#: templates/js/build.js:946 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:527 -#: templates/js/build.js:860 +#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:612 +#: templates/js/build.js:947 msgid "Delete stock allocation" msgstr "" @@ -3283,50 +3375,50 @@ msgstr "" msgid "No matching line items" msgstr "" -#: order/templates/order/sales_order_detail.html:205 +#: order/templates/order/sales_order_detail.html:206 msgid "ID" msgstr "" -#: order/templates/order/sales_order_detail.html:243 templates/js/build.js:589 -#: templates/js/build.js:855 +#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:675 +#: templates/js/build.js:942 msgid "Allocated" msgstr "" -#: order/templates/order/sales_order_detail.html:245 +#: order/templates/order/sales_order_detail.html:276 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:282 +#: order/templates/order/sales_order_detail.html:313 msgid "PO" msgstr "" -#: order/templates/order/sales_order_detail.html:312 +#: order/templates/order/sales_order_detail.html:343 msgid "Allocate serial numbers" msgstr "" -#: order/templates/order/sales_order_detail.html:315 templates/js/build.js:651 +#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:738 msgid "Allocate stock" msgstr "" -#: order/templates/order/sales_order_detail.html:318 +#: order/templates/order/sales_order_detail.html:349 msgid "Purchase stock" msgstr "" -#: order/templates/order/sales_order_detail.html:322 templates/js/build.js:644 -#: templates/js/build.js:1062 +#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:731 +#: templates/js/build.js:1149 msgid "Build stock" msgstr "" -#: order/templates/order/sales_order_detail.html:325 -#: order/templates/order/sales_order_detail.html:434 +#: order/templates/order/sales_order_detail.html:356 +#: order/templates/order/sales_order_detail.html:465 msgid "Calculate price" msgstr "" -#: order/templates/order/sales_order_detail.html:329 +#: order/templates/order/sales_order_detail.html:360 msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:440 +#: order/templates/order/sales_order_detail.html:471 msgid "Update Unit Price" msgstr "" @@ -3367,10 +3459,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_lineitem_delete.html:5 -msgid "Are you sure you wish to delete this line item?" -msgstr "" - #: order/views.py:104 msgid "Add Purchase Order Attachment" msgstr "" @@ -3471,90 +3559,94 @@ msgstr "" msgid "No lines specified" msgstr "" -#: order/views.py:1260 +#: order/views.py:1012 +msgid "Update prices" +msgstr "" + +#: order/views.py:1270 #, python-brace-format msgid "Ordered {n} parts" msgstr "" -#: order/views.py:1320 +#: order/views.py:1330 msgid "Supplier part must be specified" msgstr "" -#: order/views.py:1326 +#: order/views.py:1336 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1457 order/views.py:1475 +#: order/views.py:1467 order/views.py:1485 msgid "Edit Line Item" msgstr "" -#: order/views.py:1491 order/views.py:1503 +#: order/views.py:1501 order/views.py:1513 msgid "Delete Line Item" msgstr "" -#: order/views.py:1496 order/views.py:1508 +#: order/views.py:1506 order/views.py:1518 msgid "Deleted line item" msgstr "" -#: order/views.py:1521 +#: order/views.py:1531 msgid "Allocate Serial Numbers" msgstr "" -#: order/views.py:1566 +#: order/views.py:1576 #, python-brace-format msgid "Allocated {n} items" msgstr "" -#: order/views.py:1582 +#: order/views.py:1592 msgid "Select line item" msgstr "" -#: order/views.py:1613 -#, python-brace-format -msgid "No matching item for serial {serial}" -msgstr "" - #: order/views.py:1623 #, python-brace-format +msgid "No matching item for serial {serial}" +msgstr "" + +#: order/views.py:1633 +#, python-brace-format msgid "{serial} is not in stock" msgstr "" -#: order/views.py:1631 +#: order/views.py:1641 #, python-brace-format msgid "{serial} already allocated to an order" msgstr "" -#: order/views.py:1685 +#: order/views.py:1695 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1759 +#: order/views.py:1769 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1774 +#: order/views.py:1784 msgid "Remove allocation" msgstr "" -#: order/views.py:1846 +#: order/views.py:1856 msgid "Sales order not found" msgstr "" -#: order/views.py:1852 +#: order/views.py:1862 msgid "Price not found" msgstr "" -#: order/views.py:1855 +#: order/views.py:1865 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:1860 +#: order/views.py:1870 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/bom.py:138 part/models.py:72 part/models.py:762 +#: part/bom.py:138 part/models.py:72 part/models.py:747 #: part/templates/part/category.html:66 part/templates/part/detail.html:90 msgid "Default Location" msgstr "" @@ -3632,7 +3724,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:122 part/models.py:2168 +#: part/forms.py:122 part/models.py:2191 msgid "Parent Part" msgstr "" @@ -3708,7 +3800,7 @@ msgstr "" msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:344 part/models.py:2263 +#: part/forms.py:344 part/models.py:2286 msgid "Sub part" msgstr "" @@ -3728,7 +3820,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:82 part/models.py:2214 +#: part/models.py:82 part/models.py:2237 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -3739,365 +3831,360 @@ msgstr "" msgid "Part Categories" msgstr "" -#: part/models.py:446 part/models.py:458 +#: part/models.py:448 part/models.py:460 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:555 +#: part/models.py:557 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:559 +#: part/models.py:561 msgid "Next available serial number is" msgstr "" -#: part/models.py:564 +#: part/models.py:566 msgid "Most recent serial number is" msgstr "" -#: part/models.py:643 +#: part/models.py:645 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:654 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:685 part/templates/part/detail.html:22 +#: part/models.py:670 part/templates/part/detail.html:22 msgid "Part name" msgstr "" -#: part/models.py:692 +#: part/models.py:677 msgid "Is Template" msgstr "" -#: part/models.py:693 +#: part/models.py:678 msgid "Is this part a template part?" msgstr "" -#: part/models.py:704 +#: part/models.py:689 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:705 part/templates/part/detail.html:60 +#: part/models.py:690 part/templates/part/detail.html:60 msgid "Variant Of" msgstr "" -#: part/models.py:711 +#: part/models.py:696 msgid "Part description" msgstr "" -#: part/models.py:716 part/templates/part/category.html:73 +#: part/models.py:701 part/templates/part/category.html:73 #: part/templates/part/detail.html:67 msgid "Keywords" msgstr "" -#: part/models.py:717 +#: part/models.py:702 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:724 part/models.py:2213 part/templates/part/detail.html:73 -#: part/templates/part/set_category.html:15 templates/js/part.js:451 +#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73 +#: part/templates/part/set_category.html:15 templates/js/part.js:452 msgid "Category" msgstr "" -#: part/models.py:725 +#: part/models.py:710 msgid "Part category" msgstr "" -#: part/models.py:730 part/templates/part/detail.html:28 +#: part/models.py:715 part/templates/part/detail.html:28 #: part/templates/part/part_base.html:87 templates/js/part.js:169 #: templates/js/part.js:296 msgid "IPN" msgstr "" -#: part/models.py:731 +#: part/models.py:716 msgid "Internal Part Number" msgstr "" -#: part/models.py:737 +#: part/models.py:722 msgid "Part revision or version number" msgstr "" -#: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198 +#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199 #: templates/js/part.js:173 msgid "Revision" msgstr "" -#: part/models.py:760 +#: part/models.py:745 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:807 part/templates/part/detail.html:97 +#: part/models.py:792 part/templates/part/detail.html:97 msgid "Default Supplier" msgstr "" -#: part/models.py:808 +#: part/models.py:793 msgid "Default supplier part" msgstr "" -#: part/models.py:815 +#: part/models.py:800 msgid "Default Expiry" msgstr "" -#: part/models.py:816 +#: part/models.py:801 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:821 part/templates/part/detail.html:113 +#: part/models.py:806 part/templates/part/detail.html:113 msgid "Minimum Stock" msgstr "" -#: part/models.py:822 +#: part/models.py:807 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:828 part/models.py:2142 part/templates/part/detail.html:106 -#: part/templates/part/params.html:29 -msgid "Units" -msgstr "" - -#: part/models.py:829 +#: part/models.py:814 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:835 +#: part/models.py:820 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:841 +#: part/models.py:826 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:847 +#: part/models.py:832 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:852 +#: part/models.py:837 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:857 +#: part/models.py:842 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:227 +#: part/models.py:846 part/templates/part/detail.html:227 #: templates/js/table_filters.js:21 templates/js/table_filters.js:65 #: templates/js/table_filters.js:241 templates/js/table_filters.js:310 msgid "Active" msgstr "" -#: part/models.py:862 +#: part/models.py:847 msgid "Is this part active?" msgstr "" -#: part/models.py:867 +#: part/models.py:852 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:872 +#: part/models.py:857 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "BOM checksum" msgstr "" -#: part/models.py:875 +#: part/models.py:860 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:878 +#: part/models.py:863 msgid "BOM checked by" msgstr "" -#: part/models.py:880 +#: part/models.py:865 msgid "BOM checked date" msgstr "" -#: part/models.py:884 +#: part/models.py:869 msgid "Creation User" msgstr "" -#: part/models.py:1616 +#: part/models.py:1608 msgid "Sell multiple" msgstr "" -#: part/models.py:2040 +#: part/models.py:2063 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2057 +#: part/models.py:2080 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2077 templates/js/part.js:716 templates/js/stock.js:117 +#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117 msgid "Test Name" msgstr "" -#: part/models.py:2078 +#: part/models.py:2101 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2083 +#: part/models.py:2106 msgid "Test Description" msgstr "" -#: part/models.py:2084 +#: part/models.py:2107 msgid "Enter description for this test" msgstr "" -#: part/models.py:2089 templates/js/part.js:725 +#: part/models.py:2112 templates/js/part.js:726 #: templates/js/table_filters.js:227 msgid "Required" msgstr "" -#: part/models.py:2090 +#: part/models.py:2113 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2095 templates/js/part.js:733 +#: part/models.py:2118 templates/js/part.js:734 msgid "Requires Value" msgstr "" -#: part/models.py:2096 +#: part/models.py:2119 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2101 templates/js/part.js:740 +#: part/models.py:2124 templates/js/part.js:741 msgid "Requires Attachment" msgstr "" -#: part/models.py:2102 +#: part/models.py:2125 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2135 +#: part/models.py:2158 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2140 +#: part/models.py:2163 msgid "Parameter Name" msgstr "" -#: part/models.py:2142 +#: part/models.py:2165 msgid "Parameter Units" msgstr "" -#: part/models.py:2170 part/models.py:2219 part/models.py:2220 +#: part/models.py:2193 part/models.py:2242 part/models.py:2243 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Data" msgstr "" -#: part/models.py:2172 +#: part/models.py:2195 msgid "Parameter Value" msgstr "" -#: part/models.py:2224 templates/InvenTree/settings/category.html:67 +#: part/models.py:2247 templates/InvenTree/settings/category.html:67 msgid "Default Value" msgstr "" -#: part/models.py:2225 +#: part/models.py:2248 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2255 +#: part/models.py:2278 msgid "Select parent part" msgstr "" -#: part/models.py:2264 +#: part/models.py:2287 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2270 +#: part/models.py:2293 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2272 templates/js/bom.js:216 templates/js/bom.js:285 +#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:285 msgid "Optional" msgstr "" -#: part/models.py:2272 +#: part/models.py:2295 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2275 +#: part/models.py:2298 msgid "Overage" msgstr "" -#: part/models.py:2276 +#: part/models.py:2299 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2279 +#: part/models.py:2302 msgid "BOM item reference" msgstr "" -#: part/models.py:2282 +#: part/models.py:2305 msgid "BOM item notes" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "Checksum" msgstr "" -#: part/models.py:2284 +#: part/models.py:2307 msgid "BOM line checksum" msgstr "" -#: part/models.py:2288 templates/js/bom.js:302 templates/js/bom.js:309 +#: part/models.py:2311 templates/js/bom.js:302 templates/js/bom.js:309 #: templates/js/table_filters.js:51 msgid "Inherited" msgstr "" -#: part/models.py:2289 +#: part/models.py:2312 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2294 templates/js/bom.js:294 +#: part/models.py:2317 templates/js/bom.js:294 msgid "Allow Variants" msgstr "" -#: part/models.py:2295 +#: part/models.py:2318 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2371 part/views.py:1681 part/views.py:1733 +#: part/models.py:2394 part/views.py:1692 part/views.py:1744 #: stock/models.py:294 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2380 part/models.py:2382 +#: part/models.py:2403 part/models.py:2405 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2385 +#: part/models.py:2408 msgid "BOM Item" msgstr "" -#: part/models.py:2502 +#: part/models.py:2527 msgid "Part 1" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Part 2" msgstr "" -#: part/models.py:2506 +#: part/models.py:2531 msgid "Select Related Part" msgstr "" -#: part/models.py:2538 +#: part/models.py:2563 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" #: part/templates/part/allocation.html:11 -msgid "Part Stock Allocations" +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/allocation.html:24 +msgid "Sales Order Allocations" msgstr "" #: part/templates/part/attachments.html:10 @@ -4112,8 +4199,8 @@ msgstr "" msgid "Deleting this entry will remove the BOM row from the following part" msgstr "" -#: part/templates/part/bom.html:10 part/templates/part/navbar.html:48 -#: part/templates/part/navbar.html:51 +#: part/templates/part/bom.html:10 part/templates/part/navbar.html:50 +#: part/templates/part/navbar.html:53 msgid "Bill of Materials" msgstr "" @@ -4160,7 +4247,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:61 part/views.py:1976 +#: part/templates/part/bom.html:61 part/views.py:1987 msgid "Export Bill of Materials" msgstr "" @@ -4177,7 +4264,7 @@ msgid "All selected BOM items will be deleted" msgstr "" #: part/templates/part/bom.html:160 part/views.py:585 -#: templates/js/stock.js:1288 +#: templates/js/stock.js:1313 msgid "Create New Part" msgstr "" @@ -4258,7 +4345,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:29 part/views.py:2379 +#: part/templates/part/category.html:29 part/views.py:2397 msgid "Create new part category" msgstr "" @@ -4318,7 +4405,7 @@ msgid "View grid display" msgstr "" #: part/templates/part/category.html:209 -#: stock/templates/stock/location.html:192 templates/js/stock.js:712 +#: stock/templates/stock/location.html:192 templates/js/stock.js:737 msgid "Create new location" msgstr "" @@ -4373,14 +4460,8 @@ msgstr "" msgid "If this category is deleted, these parts will be moved to the top-level category Teile" msgstr "" -#: part/templates/part/category_navbar.html:34 -#: part/templates/part/category_navbar.html:37 -#: part/templates/part/navbar.html:22 -msgid "Parameters" -msgstr "" - #: part/templates/part/category_parametric.html:10 -#: part/templates/part/navbar.html:19 part/templates/part/params.html:10 +#: part/templates/part/navbar.html:21 part/templates/part/params.html:10 msgid "Part Parameters" msgstr "" @@ -4408,7 +4489,7 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:11 part/templates/part/navbar.html:11 +#: part/templates/part/detail.html:11 part/templates/part/navbar.html:13 msgid "Part Details" msgstr "" @@ -4488,6 +4569,36 @@ msgstr "" msgid "Part is not active" msgstr "" +#: part/templates/part/internal_prices.html:11 +#: part/templates/part/navbar.html:100 +msgid "Internal Price Information" +msgstr "" + +#: part/templates/part/internal_prices.html:19 part/views.py:2822 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/internal_prices.html:28 templates/403.html:5 +#: templates/403.html:11 +msgid "Permission Denied" +msgstr "" + +#: part/templates/part/internal_prices.html:31 templates/403.html:14 +msgid "You do not have permission to view this page." +msgstr "" + +#: part/templates/part/internal_prices.html:59 +msgid "No internal price break information found" +msgstr "" + +#: part/templates/part/internal_prices.html:110 +msgid "Edit internal price break" +msgstr "" + +#: part/templates/part/internal_prices.html:111 +msgid "Delete internal price break" +msgstr "" + #: part/templates/part/manufacturer.html:11 msgid "Part Manufacturers" msgstr "" @@ -4501,127 +4612,141 @@ msgstr "" msgid "Create new manufacturer" msgstr "" -#: part/templates/part/navbar.html:26 part/templates/part/variants.html:11 +#: part/templates/part/navbar.html:28 part/templates/part/variants.html:11 msgid "Part Variants" msgstr "" -#: part/templates/part/navbar.html:29 +#: part/templates/part/navbar.html:31 msgid "Variants" msgstr "" -#: part/templates/part/navbar.html:40 +#: part/templates/part/navbar.html:42 msgid "Allocated Stock" msgstr "" -#: part/templates/part/navbar.html:43 +#: part/templates/part/navbar.html:45 msgid "Allocations" msgstr "" -#: part/templates/part/navbar.html:64 part/templates/part/navbar.html:67 +#: part/templates/part/navbar.html:66 part/templates/part/navbar.html:69 msgid "Used In" msgstr "" -#: part/templates/part/navbar.html:72 part/templates/part/order_prices.html:12 +#: part/templates/part/navbar.html:74 part/templates/part/order_prices.html:12 msgid "Order Price Information" msgstr "" -#: part/templates/part/navbar.html:75 +#: part/templates/part/navbar.html:77 msgid "Order Price" msgstr "" -#: part/templates/part/navbar.html:98 +#: part/templates/part/navbar.html:103 part/templates/part/order_prices.html:93 +#: part/templates/part/part_pricing.html:82 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/navbar.html:106 msgid "Sales Price Information" msgstr "" -#: part/templates/part/navbar.html:112 part/templates/part/part_tests.html:10 +#: part/templates/part/navbar.html:120 part/templates/part/part_tests.html:10 msgid "Part Test Templates" msgstr "" -#: part/templates/part/navbar.html:115 stock/templates/stock/item_base.html:409 +#: part/templates/part/navbar.html:123 stock/templates/stock/item_base.html:414 msgid "Tests" msgstr "" -#: part/templates/part/navbar.html:119 part/templates/part/navbar.html:122 +#: part/templates/part/navbar.html:127 part/templates/part/navbar.html:130 #: part/templates/part/related.html:10 msgid "Related Parts" msgstr "" -#: part/templates/part/navbar.html:131 part/templates/part/notes.html:12 +#: part/templates/part/navbar.html:139 part/templates/part/notes.html:12 msgid "Part Notes" msgstr "" -#: part/templates/part/order_prices.html:21 +#: part/templates/part/order_prices.html:24 +#: part/templates/part/part_base.html:282 +msgid "Calculate" +msgstr "" + +#: part/templates/part/order_prices.html:31 msgid "Pricing ranges" msgstr "" -#: part/templates/part/order_prices.html:26 -#: part/templates/part/part_pricing.html:19 +#: part/templates/part/order_prices.html:36 +#: part/templates/part/part_pricing.html:22 msgid "Supplier Pricing" msgstr "" -#: part/templates/part/order_prices.html:27 -#: part/templates/part/order_prices.html:52 -#: part/templates/part/order_prices.html:83 -#: part/templates/part/part_pricing.html:23 -#: part/templates/part/part_pricing.html:49 -#: part/templates/part/part_pricing.html:81 +#: part/templates/part/order_prices.html:37 +#: part/templates/part/order_prices.html:62 +#: part/templates/part/order_prices.html:94 +#: part/templates/part/order_prices.html:108 +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:85 +#: part/templates/part/part_pricing.html:100 msgid "Unit Cost" msgstr "" -#: part/templates/part/order_prices.html:34 -#: part/templates/part/order_prices.html:59 -#: part/templates/part/order_prices.html:88 -#: part/templates/part/part_pricing.html:29 -#: part/templates/part/part_pricing.html:55 -#: part/templates/part/part_pricing.html:85 +#: part/templates/part/order_prices.html:44 +#: part/templates/part/order_prices.html:69 +#: part/templates/part/order_prices.html:99 +#: part/templates/part/order_prices.html:113 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:89 +#: part/templates/part/part_pricing.html:104 msgid "Total Cost" msgstr "" -#: part/templates/part/order_prices.html:42 -#: part/templates/part/part_pricing.html:37 +#: part/templates/part/order_prices.html:52 +#: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" msgstr "" -#: part/templates/part/order_prices.html:51 -#: part/templates/part/order_prices.html:103 -#: part/templates/part/part_pricing.html:45 +#: part/templates/part/order_prices.html:61 +#: part/templates/part/order_prices.html:128 +#: part/templates/part/part_pricing.html:48 msgid "BOM Pricing" msgstr "" -#: part/templates/part/order_prices.html:67 -#: part/templates/part/part_pricing.html:63 +#: part/templates/part/order_prices.html:77 +#: part/templates/part/part_pricing.html:66 msgid "Note: BOM pricing is incomplete for this part" msgstr "" -#: part/templates/part/order_prices.html:74 -#: part/templates/part/part_pricing.html:70 +#: part/templates/part/order_prices.html:84 +#: part/templates/part/part_pricing.html:73 msgid "No BOM pricing available" msgstr "" -#: part/templates/part/order_prices.html:97 -#: part/templates/part/part_pricing.html:94 +#: part/templates/part/order_prices.html:122 +#: part/templates/part/part_pricing.html:113 msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/order_prices.html:113 +#: part/templates/part/order_prices.html:138 msgid "Stock Pricing" msgstr "" -#: part/templates/part/order_prices.html:121 +#: part/templates/part/order_prices.html:146 msgid "No stock pricing history is available for this part." msgstr "" -#: part/templates/part/order_prices.html:140 +#: part/templates/part/order_prices.html:165 #, python-format msgid "Single Price - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:152 +#: part/templates/part/order_prices.html:177 #, python-format msgid "Single Price Difference - %(currency)s" msgstr "" -#: part/templates/part/order_prices.html:163 +#: part/templates/part/order_prices.html:189 #, python-format msgid "Part Single Price - %(currency)s" msgstr "" @@ -4630,19 +4755,6 @@ msgstr "" msgid "Add new parameter" msgstr "" -#: part/templates/part/params.html:18 -#: templates/InvenTree/settings/category.html:29 -#: templates/InvenTree/settings/part.html:44 -msgid "New Parameter" -msgstr "" - -#: part/templates/part/params.html:28 -#: report/templates/report/inventree_test_report_base.html:90 -#: stock/models.py:1756 templates/InvenTree/settings/header.html:8 -#: templates/js/stock.js:137 -msgid "Value" -msgstr "" - #: part/templates/part/params.html:41 templates/InvenTree/settings/user.html:19 msgid "Edit" msgstr "" @@ -4660,7 +4772,7 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:26 templates/js/company.js:156 -#: templates/js/company.js:254 templates/js/part.js:84 templates/js/part.js:161 +#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161 msgid "Inactive" msgstr "" @@ -4740,14 +4852,10 @@ msgid "Can Build" msgstr "" #: part/templates/part/part_base.html:178 templates/js/part.js:312 -#: templates/js/part.js:484 +#: templates/js/part.js:485 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:265 -msgid "Calculate" -msgstr "" - #: part/templates/part/part_tests.html:17 msgid "Add Test Template" msgstr "" @@ -4816,7 +4924,7 @@ msgid "Showing stock for all variants of %(full_name)s" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.js:239 -#: templates/js/part.js:302 templates/js/part.js:488 +#: templates/js/part.js:302 templates/js/part.js:489 msgid "No Stock" msgstr "" @@ -4853,7 +4961,7 @@ msgstr "" msgid "New Variant" msgstr "" -#: part/templatetags/inventree_extras.py:98 +#: part/templatetags/inventree_extras.py:99 msgid "Unknown database" msgstr "" @@ -4922,227 +5030,239 @@ msgstr "" msgid "Created new part" msgstr "" -#: part/views.py:914 +#: part/views.py:925 msgid "Part QR Code" msgstr "" -#: part/views.py:1016 +#: part/views.py:1027 msgid "Upload Part Image" msgstr "" -#: part/views.py:1022 part/views.py:1057 +#: part/views.py:1033 part/views.py:1068 msgid "Updated part image" msgstr "" -#: part/views.py:1031 +#: part/views.py:1042 msgid "Select Part Image" msgstr "" -#: part/views.py:1060 +#: part/views.py:1071 msgid "Part image not found" msgstr "" -#: part/views.py:1071 +#: part/views.py:1082 msgid "Edit Part Properties" msgstr "" -#: part/views.py:1106 +#: part/views.py:1117 msgid "Duplicate BOM" msgstr "" -#: part/views.py:1136 +#: part/views.py:1147 msgid "Confirm duplication of BOM from parent" msgstr "" -#: part/views.py:1157 +#: part/views.py:1168 msgid "Validate BOM" msgstr "" -#: part/views.py:1178 +#: part/views.py:1189 msgid "Confirm that the BOM is valid" msgstr "" -#: part/views.py:1189 +#: part/views.py:1200 msgid "Validated Bill of Materials" msgstr "" -#: part/views.py:1323 +#: part/views.py:1334 msgid "No BOM file provided" msgstr "" -#: part/views.py:1684 +#: part/views.py:1695 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1709 part/views.py:1712 +#: part/views.py:1720 part/views.py:1723 msgid "Select valid part" msgstr "" -#: part/views.py:1718 +#: part/views.py:1729 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1756 +#: part/views.py:1767 msgid "Select a part" msgstr "" -#: part/views.py:1762 +#: part/views.py:1773 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1766 +#: part/views.py:1777 msgid "Specify quantity" msgstr "" -#: part/views.py:2028 +#: part/views.py:2039 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:2035 +#: part/views.py:2046 msgid "Part was deleted" msgstr "" -#: part/views.py:2044 +#: part/views.py:2055 msgid "Part Pricing" msgstr "" -#: part/views.py:2178 +#: part/views.py:2196 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:2188 +#: part/views.py:2206 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:2195 +#: part/views.py:2213 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2203 +#: part/views.py:2221 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2253 +#: part/views.py:2271 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2267 +#: part/views.py:2285 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2327 +#: part/views.py:2345 msgid "Edit Part Category" msgstr "" -#: part/views.py:2365 +#: part/views.py:2383 msgid "Delete Part Category" msgstr "" -#: part/views.py:2371 +#: part/views.py:2389 msgid "Part category was deleted" msgstr "" -#: part/views.py:2423 +#: part/views.py:2441 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2524 +#: part/views.py:2542 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2580 +#: part/views.py:2598 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2599 +#: part/views.py:2617 msgid "Create BOM Item" msgstr "" -#: part/views.py:2669 +#: part/views.py:2687 msgid "Edit BOM item" msgstr "" -#: part/views.py:2725 +#: part/views.py:2743 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:180 +#: part/views.py:2831 +msgid "Edit Internal Price Break" +msgstr "" + +#: part/views.py:2839 +msgid "Delete Internal Price Break" +msgstr "" + +#: report/models.py:181 msgid "Template name" msgstr "" -#: report/models.py:186 +#: report/models.py:187 msgid "Report template file" msgstr "" -#: report/models.py:193 +#: report/models.py:194 msgid "Report template description" msgstr "" -#: report/models.py:199 +#: report/models.py:200 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:275 +#: report/models.py:291 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:298 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:318 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:326 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:327 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:347 +#: report/models.py:371 msgid "Build Filters" msgstr "" -#: report/models.py:348 +#: report/models.py:372 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:385 +#: report/models.py:410 msgid "Part Filters" msgstr "" -#: report/models.py:386 +#: report/models.py:411 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:416 +#: report/models.py:441 msgid "Purchase order query filters" msgstr "" -#: report/models.py:450 +#: report/models.py:475 msgid "Sales order query filters" msgstr "" -#: report/models.py:500 +#: report/models.py:525 msgid "Snippet" msgstr "" -#: report/models.py:501 +#: report/models.py:526 msgid "Report snippet file" msgstr "" -#: report/models.py:505 +#: report/models.py:530 msgid "Snippet file description" msgstr "" -#: report/models.py:540 +#: report/models.py:565 msgid "Asset" msgstr "" -#: report/models.py:541 +#: report/models.py:566 msgid "Report asset file" msgstr "" -#: report/models.py:544 +#: report/models.py:569 msgid "Asset file description" msgstr "" @@ -5174,7 +5294,7 @@ msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:92 -#: templates/js/order.js:195 templates/js/stock.js:987 +#: templates/js/order.js:195 templates/js/stock.js:1012 msgid "Date" msgstr "" @@ -5197,7 +5317,7 @@ msgid "Moved {n} parts to {loc}" msgstr "" #: stock/forms.py:114 stock/forms.py:418 stock/models.py:509 -#: stock/templates/stock/item_base.html:376 templates/js/stock.js:654 +#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658 msgid "Expiry Date" msgstr "" @@ -5483,12 +5603,12 @@ msgid "Stock Item Attachments" msgstr "" #: stock/templates/stock/item_base.html:33 -#: stock/templates/stock/item_base.html:380 templates/js/table_filters.js:150 +#: stock/templates/stock/item_base.html:385 templates/js/table_filters.js:150 msgid "Expired" msgstr "" #: stock/templates/stock/item_base.html:43 -#: stock/templates/stock/item_base.html:382 templates/js/table_filters.js:155 +#: stock/templates/stock/item_base.html:387 templates/js/table_filters.js:155 msgid "Stale" msgstr "" @@ -5618,7 +5738,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:289 templates/js/build.js:508 +#: stock/templates/stock/item_base.html:289 templates/js/build.js:593 msgid "No location set" msgstr "" @@ -5630,25 +5750,29 @@ msgstr "" msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:380 +#: stock/templates/stock/item_base.html:356 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:385 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:387 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:389 templates/js/stock.js:660 +#: stock/templates/stock/item_base.html:394 templates/js/stock.js:664 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:394 +#: stock/templates/stock/item_base.html:399 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:398 +#: stock/templates/stock/item_base.html:403 msgid "No stocktake performed" msgstr "" @@ -5945,7 +6069,7 @@ msgstr "" msgid "Add Stock Items" msgstr "" -#: stock/views.py:1001 users/models.py:183 +#: stock/views.py:1001 users/models.py:187 msgid "Add" msgstr "" @@ -6011,7 +6135,7 @@ msgstr "" msgid "Serialize Stock" msgstr "" -#: stock/views.py:1575 templates/js/build.js:244 +#: stock/views.py:1575 templates/js/build.js:326 msgid "Create new Stock Item" msgstr "" @@ -6043,14 +6167,6 @@ msgstr "" msgid "Add Stock Tracking Entry" msgstr "" -#: templates/403.html:5 templates/403.html:11 -msgid "Permission Denied" -msgstr "" - -#: templates/403.html:14 -msgid "You do not have permission to view this page." -msgstr "" - #: templates/404.html:5 templates/404.html:11 msgid "Page Not Found" msgstr "" @@ -6119,11 +6235,11 @@ msgstr "" msgid "Enter a search query" msgstr "" -#: templates/InvenTree/search.html:268 templates/js/stock.js:298 +#: templates/InvenTree/search.html:268 templates/js/stock.js:303 msgid "Shipped to customer" msgstr "" -#: templates/InvenTree/search.html:271 templates/js/stock.js:308 +#: templates/InvenTree/search.html:271 templates/js/stock.js:313 msgid "No stock location set" msgstr "" @@ -6168,12 +6284,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/category.html:70 -#: templates/InvenTree/settings/part.html:81 +#: templates/InvenTree/settings/part.html:85 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/category.html:71 -#: templates/InvenTree/settings/part.html:82 +#: templates/InvenTree/settings/part.html:86 msgid "Delete Template" msgstr "" @@ -6221,11 +6337,11 @@ msgstr "" msgid "Part Options" msgstr "" -#: templates/InvenTree/settings/part.html:40 +#: templates/InvenTree/settings/part.html:44 msgid "Part Parameter Templates" msgstr "" -#: templates/InvenTree/settings/part.html:61 +#: templates/InvenTree/settings/part.html:65 msgid "No part parameter templates found" msgstr "" @@ -6341,47 +6457,51 @@ msgid "API Version" msgstr "" #: templates/about.html:39 +msgid "Python Version" +msgstr "" + +#: templates/about.html:44 msgid "Django Version" msgstr "" -#: templates/about.html:46 +#: templates/about.html:51 msgid "Commit Hash" msgstr "" -#: templates/about.html:53 +#: templates/about.html:58 msgid "Commit Date" msgstr "" -#: templates/about.html:58 +#: templates/about.html:63 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:63 +#: templates/about.html:68 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:68 +#: templates/about.html:73 msgid "Credits" msgstr "" -#: templates/about.html:73 +#: templates/about.html:78 msgid "Mobile App" msgstr "" -#: templates/about.html:78 +#: templates/about.html:83 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:85 templates/clip.html:4 +#: templates/about.html:90 templates/clip.html:4 msgid "copy to clipboard" msgstr "" -#: templates/about.html:85 +#: templates/about.html:90 msgid "copy version information" msgstr "" -#: templates/about.html:95 templates/js/modals.js:568 -#: templates/js/modals.js:846 templates/modals.html:29 templates/modals.html:54 +#: templates/about.html:100 templates/js/modals.js:568 +#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54 #: templates/modals.html:97 msgid "Close" msgstr "" @@ -6442,7 +6562,7 @@ msgstr "" msgid "Unknown response from server" msgstr "" -#: templates/js/barcode.js:119 templates/js/modals.js:901 +#: templates/js/barcode.js:119 templates/js/modals.js:921 msgid "Invalid server response" msgstr "" @@ -6506,7 +6626,7 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/bom.js:175 templates/js/build.js:1004 +#: templates/js/bom.js:175 templates/js/build.js:1091 msgid "Open subassembly" msgstr "" @@ -6542,7 +6662,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:470 templates/js/build.js:340 templates/js/build.js:1102 +#: templates/js/bom.js:470 templates/js/build.js:423 templates/js/build.js:1189 msgid "No BOM items found" msgstr "" @@ -6562,37 +6682,45 @@ msgstr "" msgid "Delete build output" msgstr "" -#: templates/js/build.js:243 templates/stock_table.html:20 +#: templates/js/build.js:184 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/build.js:222 templates/js/order.js:382 +msgid "Location not specified" +msgstr "" + +#: templates/js/build.js:325 templates/stock_table.html:20 msgid "New Stock Item" msgstr "" -#: templates/js/build.js:559 +#: templates/js/build.js:644 msgid "Required Part" msgstr "" -#: templates/js/build.js:580 +#: templates/js/build.js:665 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:648 templates/js/build.js:1066 +#: templates/js/build.js:735 templates/js/build.js:1153 #: templates/stock_table.html:59 msgid "Order stock" msgstr "" -#: templates/js/build.js:701 +#: templates/js/build.js:788 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:718 templates/js/part.js:390 templates/js/part.js:634 -#: templates/js/stock.js:509 templates/js/stock.js:941 +#: templates/js/build.js:805 templates/js/part.js:390 templates/js/part.js:635 +#: templates/js/stock.js:514 templates/js/stock.js:966 msgid "Select" msgstr "" -#: templates/js/build.js:738 +#: templates/js/build.js:825 msgid "Build order is overdue" msgstr "" -#: templates/js/build.js:837 +#: templates/js/build.js:924 msgid "No parts allocated for" msgstr "" @@ -6612,17 +6740,29 @@ msgstr "" msgid "No manufacturer parts found" msgstr "" -#: templates/js/company.js:148 templates/js/company.js:246 +#: templates/js/company.js:148 templates/js/company.js:347 #: templates/js/part.js:68 templates/js/part.js:153 msgid "Template part" msgstr "" -#: templates/js/company.js:152 templates/js/company.js:250 +#: templates/js/company.js:152 templates/js/company.js:351 #: templates/js/part.js:72 templates/js/part.js:157 msgid "Assembled part" msgstr "" -#: templates/js/company.js:227 +#: templates/js/company.js:226 +msgid "No parameters found" +msgstr "" + +#: templates/js/company.js:262 +msgid "Edit parameter" +msgstr "" + +#: templates/js/company.js:263 +msgid "Delete parameter" +msgstr "" + +#: templates/js/company.js:328 msgid "No supplier parts found" msgstr "" @@ -6710,76 +6850,76 @@ msgstr "" msgid "Loading Data" msgstr "" -#: templates/js/modals.js:567 templates/js/modals.js:845 +#: templates/js/modals.js:567 templates/js/modals.js:860 #: templates/modals.html:30 templates/modals.html:55 msgid "Submit" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Invalid response from server" msgstr "" -#: templates/js/modals.js:797 +#: templates/js/modals.js:811 msgid "Form data missing from server response" msgstr "" -#: templates/js/modals.js:810 +#: templates/js/modals.js:824 msgid "Error posting form data" msgstr "" -#: templates/js/modals.js:901 +#: templates/js/modals.js:921 msgid "JSON response missing form data" msgstr "" -#: templates/js/modals.js:911 +#: templates/js/modals.js:931 msgid "No Response" msgstr "" -#: templates/js/modals.js:912 +#: templates/js/modals.js:932 msgid "No response from the InvenTree server" msgstr "" -#: templates/js/modals.js:916 +#: templates/js/modals.js:936 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/modals.js:917 +#: templates/js/modals.js:937 msgid "Server returned error code 400" msgstr "" -#: templates/js/modals.js:921 +#: templates/js/modals.js:941 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/modals.js:922 +#: templates/js/modals.js:942 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/modals.js:926 +#: templates/js/modals.js:946 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/modals.js:927 +#: templates/js/modals.js:947 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/modals.js:931 +#: templates/js/modals.js:951 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/modals.js:932 +#: templates/js/modals.js:952 msgid "The requested resource could not be located on the server" msgstr "" -#: templates/js/modals.js:936 +#: templates/js/modals.js:956 msgid "Error 408: Timeout" msgstr "" -#: templates/js/modals.js:937 +#: templates/js/modals.js:957 msgid "Connection timeout while requesting data from server" msgstr "" -#: templates/js/modals.js:940 +#: templates/js/modals.js:960 msgid "Error requesting form data" msgstr "" @@ -6795,6 +6935,10 @@ msgstr "" msgid "No sales orders found" msgstr "" +#: templates/js/order.js:343 +msgid "No sales order allocations found" +msgstr "" + #: templates/js/part.js:10 msgid "YES" msgstr "" @@ -6823,39 +6967,39 @@ msgstr "" msgid "No variants found" msgstr "" -#: templates/js/part.js:280 templates/js/part.js:518 +#: templates/js/part.js:280 templates/js/part.js:519 msgid "No parts found" msgstr "" -#: templates/js/part.js:457 +#: templates/js/part.js:458 msgid "No category" msgstr "" -#: templates/js/part.js:475 templates/js/table_filters.js:323 +#: templates/js/part.js:476 templates/js/table_filters.js:323 msgid "Low stock" msgstr "" -#: templates/js/part.js:659 templates/js/stock.js:965 +#: templates/js/part.js:660 templates/js/stock.js:990 msgid "Path" msgstr "" -#: templates/js/part.js:702 +#: templates/js/part.js:703 msgid "No test templates matching query" msgstr "" -#: templates/js/part.js:753 templates/js/stock.js:75 +#: templates/js/part.js:754 templates/js/stock.js:75 msgid "Edit test result" msgstr "" -#: templates/js/part.js:754 templates/js/stock.js:76 +#: templates/js/part.js:755 templates/js/stock.js:76 msgid "Delete test result" msgstr "" -#: templates/js/part.js:760 +#: templates/js/part.js:761 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/part.js:805 +#: templates/js/part.js:806 msgid "Single Price Difference" msgstr "" @@ -6953,155 +7097,155 @@ msgstr "" msgid "Test Date" msgstr "" -#: templates/js/stock.js:290 +#: templates/js/stock.js:295 msgid "In production" msgstr "" -#: templates/js/stock.js:294 +#: templates/js/stock.js:299 msgid "Installed in Stock Item" msgstr "" -#: templates/js/stock.js:302 +#: templates/js/stock.js:307 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/stock.js:334 +#: templates/js/stock.js:339 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.js:355 +#: templates/js/stock.js:360 msgid "items" msgstr "" -#: templates/js/stock.js:447 +#: templates/js/stock.js:452 msgid "batches" msgstr "" -#: templates/js/stock.js:474 +#: templates/js/stock.js:479 msgid "locations" msgstr "" -#: templates/js/stock.js:476 +#: templates/js/stock.js:481 msgid "Undefined location" msgstr "" -#: templates/js/stock.js:577 +#: templates/js/stock.js:582 msgid "Stock item is in production" msgstr "" -#: templates/js/stock.js:582 +#: templates/js/stock.js:587 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/stock.js:585 +#: templates/js/stock.js:590 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/stock.js:589 +#: templates/js/stock.js:594 msgid "Stock item has expired" msgstr "" -#: templates/js/stock.js:591 +#: templates/js/stock.js:596 msgid "Stock item will expire soon" msgstr "" -#: templates/js/stock.js:595 +#: templates/js/stock.js:600 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.js:599 +#: templates/js/stock.js:604 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:607 +#: templates/js/stock.js:611 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:611 +#: templates/js/stock.js:615 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:614 +#: templates/js/stock.js:618 msgid "Stock item is destroyed" msgstr "" -#: templates/js/stock.js:618 templates/js/table_filters.js:143 +#: templates/js/stock.js:622 templates/js/table_filters.js:143 msgid "Depleted" msgstr "" -#: templates/js/stock.js:647 +#: templates/js/stock.js:651 msgid "Stocktake" msgstr "" -#: templates/js/stock.js:828 +#: templates/js/stock.js:853 msgid "Stock Status" msgstr "" -#: templates/js/stock.js:843 +#: templates/js/stock.js:868 msgid "Set Stock Status" msgstr "" -#: templates/js/stock.js:857 +#: templates/js/stock.js:882 msgid "Select Status Code" msgstr "" -#: templates/js/stock.js:858 +#: templates/js/stock.js:883 msgid "Status code must be selected" msgstr "" -#: templates/js/stock.js:997 +#: templates/js/stock.js:1022 msgid "Invalid date" msgstr "" -#: templates/js/stock.js:1044 +#: templates/js/stock.js:1069 msgid "Location no longer exists" msgstr "" -#: templates/js/stock.js:1063 +#: templates/js/stock.js:1088 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/stock.js:1082 +#: templates/js/stock.js:1107 msgid "Customer no longer exists" msgstr "" -#: templates/js/stock.js:1100 +#: templates/js/stock.js:1125 msgid "Stock item no longer exists" msgstr "" -#: templates/js/stock.js:1123 +#: templates/js/stock.js:1148 msgid "Added" msgstr "" -#: templates/js/stock.js:1131 +#: templates/js/stock.js:1156 msgid "Removed" msgstr "" -#: templates/js/stock.js:1163 +#: templates/js/stock.js:1188 msgid "No user information" msgstr "" -#: templates/js/stock.js:1175 +#: templates/js/stock.js:1200 msgid "Edit tracking entry" msgstr "" -#: templates/js/stock.js:1176 +#: templates/js/stock.js:1201 msgid "Delete tracking entry" msgstr "" -#: templates/js/stock.js:1300 +#: templates/js/stock.js:1325 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:1341 +#: templates/js/stock.js:1366 msgid "No installed items" msgstr "" -#: templates/js/stock.js:1364 +#: templates/js/stock.js:1389 msgid "Serial" msgstr "" -#: templates/js/stock.js:1392 +#: templates/js/stock.js:1417 msgid "Uninstall Stock Item" msgstr "" @@ -7267,56 +7411,56 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/js/tables.js:321 +#: templates/js/tables.js:323 msgid "Loading data" msgstr "" -#: templates/js/tables.js:324 +#: templates/js/tables.js:326 msgid "rows per page" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "Showing" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "to" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "of" msgstr "" -#: templates/js/tables.js:327 +#: templates/js/tables.js:329 msgid "rows" msgstr "" -#: templates/js/tables.js:330 templates/search_form.html:6 +#: templates/js/tables.js:332 templates/search_form.html:6 #: templates/search_form.html:8 msgid "Search" msgstr "" -#: templates/js/tables.js:333 +#: templates/js/tables.js:335 msgid "No matching results" msgstr "" -#: templates/js/tables.js:336 +#: templates/js/tables.js:338 msgid "Hide/Show pagination" msgstr "" -#: templates/js/tables.js:339 +#: templates/js/tables.js:341 msgid "Refresh" msgstr "" -#: templates/js/tables.js:342 +#: templates/js/tables.js:344 msgid "Toggle" msgstr "" -#: templates/js/tables.js:345 +#: templates/js/tables.js:347 msgid "Columns" msgstr "" -#: templates/js/tables.js:348 +#: templates/js/tables.js:350 msgid "All" msgstr "" @@ -7560,35 +7704,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:170 +#: users/models.py:174 msgid "Permission set" msgstr "" -#: users/models.py:178 +#: users/models.py:182 msgid "Group" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "View" msgstr "" -#: users/models.py:181 +#: users/models.py:185 msgid "Permission to view items" msgstr "" -#: users/models.py:183 +#: users/models.py:187 msgid "Permission to add items" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Change" msgstr "" -#: users/models.py:185 +#: users/models.py:189 msgid "Permissions to edit items" msgstr "" -#: users/models.py:187 +#: users/models.py:191 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 6661bd568b..c22d76a52e 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -157,7 +157,7 @@ class POList(generics.ListCreateAPIView): ordering = '-creation_date' -class PODetail(generics.RetrieveUpdateAPIView): +class PODetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a PurchaseOrder object """ queryset = PurchaseOrder.objects.all() @@ -382,7 +382,7 @@ class SOList(generics.ListCreateAPIView): ordering = '-creation_date' -class SODetail(generics.RetrieveUpdateAPIView): +class SODetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a SalesOrder object. """ diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index fee3b0bf1e..e527b3cec9 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -92,8 +92,10 @@ class POSerializer(InvenTreeModelSerializer): ] read_only_fields = [ - 'reference', 'status' + 'issue_date', + 'complete_date', + 'creation_date', ] @@ -109,8 +111,9 @@ class POLineItemSerializer(InvenTreeModelSerializer): self.fields.pop('part_detail') self.fields.pop('supplier_part_detail') - quantity = serializers.FloatField() - received = serializers.FloatField() + # TODO: Once https://github.com/inventree/InvenTree/issues/1687 is fixed, remove default values + quantity = serializers.FloatField(default=1) + received = serializers.FloatField(default=0) part_detail = PartBriefSerializer(source='get_base_part', many=False, read_only=True) supplier_part_detail = SupplierPartSerializer(source='part', many=False, read_only=True) @@ -225,8 +228,9 @@ class SalesOrderSerializer(InvenTreeModelSerializer): ] read_only_fields = [ - 'reference', - 'status' + 'status', + 'creation_date', + 'shipment_date', ] @@ -312,7 +316,9 @@ class SOLineItemSerializer(InvenTreeModelSerializer): part_detail = PartBriefSerializer(source='part', many=False, read_only=True) allocations = SalesOrderAllocationSerializer(many=True, read_only=True) - quantity = serializers.FloatField() + # TODO: Once https://github.com/inventree/InvenTree/issues/1687 is fixed, remove default values + quantity = serializers.FloatField(default=1) + allocated = serializers.FloatField(source='allocated_quantity', read_only=True) fulfilled = serializers.FloatField(source='fulfilled_quantity', read_only=True) sale_price_string = serializers.CharField(source='sale_price', read_only=True) diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index 642f866506..c7ba6be8a4 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -75,7 +75,7 @@ src="{% static 'img/blank_image.png' %}" {% trans "Order Reference" %} - {{ order.reference }}{% include "clip.html"%} + {% settings_value 'PURCHASEORDER_REFERENCE_PREFIX' %}{{ order.reference }}{% include "clip.html"%} diff --git a/InvenTree/order/templates/order/order_wizard/select_parts.html b/InvenTree/order/templates/order/order_wizard/select_parts.html index 28b4a36213..a02113fa18 100644 --- a/InvenTree/order/templates/order/order_wizard/select_parts.html +++ b/InvenTree/order/templates/order/order_wizard/select_parts.html @@ -4,6 +4,8 @@ {% load i18n %} {% block form %} +{% default_currency as currency %} +{% settings_value 'PART_SHOW_PRICE_IN_FORMS' as show_price %}

{% trans "Step 1 of 2 - Select Part Suppliers" %} @@ -49,7 +51,13 @@ diff --git a/InvenTree/order/templates/order/po_attachments.html b/InvenTree/order/templates/order/po_attachments.html index a0ab77975a..40052c1ec6 100644 --- a/InvenTree/order/templates/order/po_attachments.html +++ b/InvenTree/order/templates/order/po_attachments.html @@ -57,8 +57,6 @@ $("#attachment-table").on('click', '.attachment-delete-button', function() { var url = `/order/purchase-order/attachment/${button.attr('pk')}/delete/`; - console.log("url: " + url); - launchModalForm(url, { reload: true, }); diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index d3f4ba74a2..b342cefe66 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -77,7 +77,7 @@ src="{% static 'img/blank_image.png' %}" {% trans "Order Reference" %} - {{ order.reference }}{% include "clip.html"%} + {% settings_value 'SALESORDER_REFERENCE_PREFIX' %}{{ order.reference }}{% include "clip.html"%} diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index ee77f429e1..24ca8581d9 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -110,6 +110,96 @@ class PurchaseOrderTest(OrderTest): self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_po_operations(self): + """ + Test that we can create / edit and delete a PurchaseOrder via the API + """ + + n = PurchaseOrder.objects.count() + + url = reverse('api-po-list') + + # Initially we do not have "add" permission for the PurchaseOrder model, + # so this POST request should return 403 + response = self.post( + url, + { + 'supplier': 1, + 'reference': '123456789-xyz', + 'description': 'PO created via the API', + }, + expected_code=403 + ) + + # And no new PurchaseOrder objects should have been created + self.assertEqual(PurchaseOrder.objects.count(), n) + + # Ok, now let's give this user the correct permission + self.assignRole('purchase_order.add') + + # Initially we do not have "add" permission for the PurchaseOrder model, + # so this POST request should return 403 + response = self.post( + url, + { + 'supplier': 1, + 'reference': '123456789-xyz', + 'description': 'PO created via the API', + }, + expected_code=201 + ) + + self.assertEqual(PurchaseOrder.objects.count(), n + 1) + + pk = response.data['pk'] + + # Try to create a PO with identical reference (should fail!) + response = self.post( + url, + { + 'supplier': 1, + 'reference': '123456789-xyz', + 'description': 'A different description', + }, + expected_code=400 + ) + + self.assertEqual(PurchaseOrder.objects.count(), n + 1) + + url = reverse('api-po-detail', kwargs={'pk': pk}) + + # Get detail info! + response = self.get(url) + self.assertEqual(response.data['pk'], pk) + self.assertEqual(response.data['reference'], '123456789-xyz') + + # Try to alter (edit) the PurchaseOrder + response = self.patch( + url, + { + 'reference': '12345-abc', + }, + expected_code=200 + ) + + # Reference should have changed + self.assertEqual(response.data['reference'], '12345-abc') + + # Now, let's try to delete it! + # Initially, we do *not* have the required permission! + response = self.delete(url, expected_code=403) + + # Now, add the "delete" permission! + self.assignRole("purchase_order.delete") + + response = self.delete(url, expected_code=204) + + # Number of PurchaseOrder objects should have decreased + self.assertEqual(PurchaseOrder.objects.count(), n) + + # And if we try to access the detail view again, it has gone + response = self.get(url, expected_code=404) + class SalesOrderTest(OrderTest): """ @@ -158,8 +248,6 @@ class SalesOrderTest(OrderTest): response = self.get(url) - self.assertEqual(response.status_code, 200) - data = response.data self.assertEqual(data['pk'], 1) @@ -168,6 +256,87 @@ class SalesOrderTest(OrderTest): url = reverse('api-so-attachment-list') - response = self.get(url) + self.get(url) - self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_so_operations(self): + """ + Test that we can create / edit and delete a SalesOrder via the API + """ + + n = SalesOrder.objects.count() + + url = reverse('api-so-list') + + # Initially we do not have "add" permission for the SalesOrder model, + # so this POST request should return 403 (denied) + response = self.post( + url, + { + 'customer': 4, + 'reference': '12345', + 'description': 'Sales order', + }, + expected_code=403, + ) + + self.assignRole('sales_order.add') + + # Now we should be able to create a SalesOrder via the API + response = self.post( + url, + { + 'customer': 4, + 'reference': '12345', + 'description': 'Sales order', + }, + expected_code=201 + ) + + # Check that the new order has been created + self.assertEqual(SalesOrder.objects.count(), n + 1) + + # Grab the PK for the newly created SalesOrder + pk = response.data['pk'] + + # Try to create a SO with identical reference (should fail) + response = self.post( + url, + { + 'customer': 4, + 'reference': '12345', + 'description': 'Another sales order', + }, + expected_code=400 + ) + + url = reverse('api-so-detail', kwargs={'pk': pk}) + + # Extract detail info for the SalesOrder + response = self.get(url) + self.assertEqual(response.data['reference'], '12345') + + # Try to alter (edit) the SalesOrder + response = self.patch( + url, + { + 'reference': '12345-a', + }, + expected_code=200 + ) + + # Reference should have changed + self.assertEqual(response.data['reference'], '12345-a') + + # Now, let's try to delete this SalesOrder + # Initially, we do not have the required permission + response = self.delete(url, expected_code=403) + + self.assignRole('sales_order.delete') + + response = self.delete(url, expected_code=204) + + # Check that the number of sales orders has decreased + self.assertEqual(SalesOrder.objects.count(), n) + + # And the resource should no longer be available + response = self.get(url, expected_code=404) diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 9614f17020..98f3384ca9 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -1010,6 +1010,15 @@ class OrderParts(AjaxView): return ctx + def get_data(self): + """ enrich respone json data """ + data = super().get_data() + # if in selection-phase, add a button to update the prices + if getattr(self, 'form_step', 'select_parts') == 'select_parts': + data['buttons'] = [{'name': 'update_price', 'title': _('Update prices')}] # set buttons + data['hideErrorMessage'] = '1' # hide the error message + return data + def get_suppliers(self): """ Calculates a list of suppliers which the user will need to create POs for. This is calculated AFTER the user finishes selecting the parts to order. @@ -1244,9 +1253,10 @@ class OrderParts(AjaxView): valid = False if form_step == 'select_parts': - # No errors? Proceed to PO selection form - if part_errors is False: + # No errors? and the price-update button was not used to submit? Proceed to PO selection form + if part_errors is False and 'act-btn_update_price' not in request.POST: self.ajax_template_name = 'order/order_wizard/select_pos.html' + self.form_step = 'select_purchase_orders' # set step (important for get_data) else: self.ajax_template_name = 'order/order_wizard/select_parts.html' diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index 637dbbf2cf..2e434d928d 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -111,6 +111,13 @@ class PartCategoryResource(ModelResource): PartCategory.objects.rebuild() +class PartCategoryInline(admin.TabularInline): + """ + Inline for PartCategory model + """ + model = PartCategory + + class PartCategoryAdmin(ImportExportModelAdmin): resource_class = PartCategoryResource @@ -119,6 +126,10 @@ class PartCategoryAdmin(ImportExportModelAdmin): search_fields = ('name', 'description') + inlines = [ + PartCategoryInline, + ] + class PartRelatedAdmin(admin.ModelAdmin): ''' Class to manage PartRelated objects ''' diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index c2785b666f..60cea121a7 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -706,6 +706,7 @@ class PartList(generics.ListCreateAPIView): 'creation_date', 'IPN', 'in_stock', + 'category', ] # Default ordering diff --git a/InvenTree/part/apps.py b/InvenTree/part/apps.py index 1b233bccac..0c57e2c1ab 100644 --- a/InvenTree/part/apps.py +++ b/InvenTree/part/apps.py @@ -39,7 +39,8 @@ class PartConfig(AppConfig): logger.debug("InvenTree: Checking Part image thumbnails") try: - for part in Part.objects.all(): + # Only check parts which have images + for part in Part.objects.exclude(image=None): if part.image: url = part.image.thumbnail.name loc = os.path.join(settings.MEDIA_ROOT, url) @@ -50,8 +51,7 @@ class PartConfig(AppConfig): part.image.render_variations(replace=False) except FileNotFoundError: logger.warning(f"Image file '{part.image}' missing") - part.image = None - part.save() + pass except UnidentifiedImageError: logger.warning(f"Image file '{part.image}' is invalid") except (OperationalError, ProgrammingError): diff --git a/InvenTree/part/fixtures/part.yaml b/InvenTree/part/fixtures/part.yaml index 508a1577bb..3c24690efc 100644 --- a/InvenTree/part/fixtures/part.yaml +++ b/InvenTree/part/fixtures/part.yaml @@ -6,7 +6,7 @@ name: 'M2x4 LPHS' description: 'M2x4 low profile head screw' category: 8 - link: www.acme.com/parts/m2x4lphs + link: http://www.acme.com/parts/m2x4lphs tree_id: 0 purchaseable: True level: 0 @@ -56,6 +56,7 @@ fields: name: 'C_22N_0805' description: '22nF capacitor in 0805 package' + purchaseable: true category: 3 tree_id: 0 level: 0 diff --git a/InvenTree/part/migrations/0056_auto_20201110_1125.py b/InvenTree/part/migrations/0056_auto_20201110_1125.py index b382dded71..862f9411c8 100644 --- a/InvenTree/part/migrations/0056_auto_20201110_1125.py +++ b/InvenTree/part/migrations/0056_auto_20201110_1125.py @@ -71,7 +71,8 @@ def migrate_currencies(apps, schema_editor): count += 1 - print(f"Updated {count} SupplierPriceBreak rows") + if count > 0: + print(f"Updated {count} SupplierPriceBreak rows") def reverse_currencies(apps, schema_editor): """ diff --git a/InvenTree/part/migrations/0068_part_unique_part.py b/InvenTree/part/migrations/0068_part_unique_part.py new file mode 100644 index 0000000000..2e87fc7b2a --- /dev/null +++ b/InvenTree/part/migrations/0068_part_unique_part.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.4 on 2021-06-21 23:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0067_partinternalpricebreak'), + ] + + operations = [ + migrations.AddConstraint( + model_name='part', + constraint=models.UniqueConstraint(fields=('name', 'IPN', 'revision'), name='unique_part'), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 6c05d62a7e..2b97fde596 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -321,6 +321,9 @@ class Part(MPTTModel): verbose_name = _("Part") verbose_name_plural = _("Parts") ordering = ['name', ] + constraints = [ + UniqueConstraint(fields=['name', 'IPN', 'revision'], name='unique_part') + ] class MPTTMeta: # For legacy reasons the 'variant_of' field is used to indicate the MPTT parent @@ -379,8 +382,7 @@ class Part(MPTTModel): logger.info(f"Deleting unused image file '{previous.image}'") previous.image.delete(save=False) - self.clean() - self.validate_unique() + self.full_clean() super().save(*args, **kwargs) @@ -643,23 +645,6 @@ class Part(MPTTModel): 'IPN': _('Duplicate IPN not allowed in part settings'), }) - # Part name uniqueness should be case insensitive - try: - parts = Part.objects.exclude(id=self.id).filter( - name__iexact=self.name, - IPN__iexact=self.IPN, - revision__iexact=self.revision) - - if parts.exists(): - msg = _("Part must be unique for name, IPN and revision") - raise ValidationError({ - "name": msg, - "IPN": msg, - "revision": msg, - }) - except Part.DoesNotExist: - pass - def clean(self): """ Perform cleaning operations for the Part model @@ -1494,16 +1479,17 @@ class Part(MPTTModel): return True - def get_price_info(self, quantity=1, buy=True, bom=True): + def get_price_info(self, quantity=1, buy=True, bom=True, internal=False): """ Return a simplified pricing string for this part Args: quantity: Number of units to calculate price for buy: Include supplier pricing (default = True) bom: Include BOM pricing (default = True) + internal: Include internal pricing (default = False) """ - price_range = self.get_price_range(quantity, buy, bom) + price_range = self.get_price_range(quantity, buy, bom, internal) if price_range is None: return None @@ -1591,9 +1577,10 @@ class Part(MPTTModel): - Supplier price (if purchased from suppliers) - BOM price (if built from other parts) + - Internal price (if set for the part) Returns: - Minimum of the supplier price or BOM price. If no pricing available, returns None + Minimum of the supplier, BOM or internal price. If no pricing available, returns None """ # only get internal price if set and should be used @@ -2514,7 +2501,9 @@ class BomItem(models.Model): def price_range(self): """ Return the price-range for this BOM item. """ - prange = self.sub_part.get_price_range(self.quantity) + # get internal price setting + use_internal = common.models.InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False) + prange = self.sub_part.get_price_range(self.quantity, intenal=use_internal) if prange is None: return prange diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 76275bd5e1..6c47f1310f 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -7,12 +7,15 @@ from decimal import Decimal from django.db import models from django.db.models import Q from django.db.models.functions import Coalesce -from InvenTree.serializers import (InvenTreeAttachmentSerializerField, - InvenTreeModelSerializer) -from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus + from rest_framework import serializers from sql_util.utils import SubqueryCount, SubquerySum from djmoney.contrib.django_rest_framework import MoneyField + +from InvenTree.serializers import (InvenTreeAttachmentSerializerField, + InvenTreeImageSerializerField, + InvenTreeModelSerializer) +from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus from stock.models import StockItem from .models import (BomItem, Part, PartAttachment, PartCategory, @@ -300,7 +303,7 @@ class PartSerializer(InvenTreeModelSerializer): stock_item_count = serializers.IntegerField(read_only=True) suppliers = serializers.IntegerField(read_only=True) - image = serializers.CharField(source='get_image_url', read_only=True) + image = InvenTreeImageSerializerField(required=False, allow_null=True) thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) starred = serializers.SerializerMethodField() diff --git a/InvenTree/part/templates/part/order_prices.html b/InvenTree/part/templates/part/order_prices.html index 85146f46d2..c8f0ea29a0 100644 --- a/InvenTree/part/templates/part/order_prices.html +++ b/InvenTree/part/templates/part/order_prices.html @@ -138,7 +138,7 @@

{% trans 'Stock Pricing' %}

- {% if price_history|length > 1 %} + {% if price_history|length > 0 %}
diff --git a/InvenTree/part/templates/part/part_base.html b/InvenTree/part/templates/part/part_base.html index 7e1d33bdea..b486e2c589 100644 --- a/InvenTree/part/templates/part/part_base.html +++ b/InvenTree/part/templates/part/part_base.html @@ -239,11 +239,19 @@ enableDragAndDrop( '#part-thumb', - "{% url 'part-image-upload' part.id %}", + "{% url 'api-part-detail' part.id %}", { label: 'image', + method: 'PATCH', success: function(data, status, xhr) { - location.reload(); + + // If image / thumbnail data present, live update + if (data.image) { + $('#part-image').attr('src', data.image); + } else { + // Otherwise, reload the page + location.reload(); + } } } ); diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py index 90e91e167f..38689df26b 100644 --- a/InvenTree/part/templatetags/inventree_extras.py +++ b/InvenTree/part/templatetags/inventree_extras.py @@ -5,6 +5,7 @@ over and above the built-in Django tags. """ import os +import sys from django.utils.translation import ugettext_lazy as _ from django.conf import settings as djangosettings @@ -114,6 +115,14 @@ def inventree_title(*args, **kwargs): return version.inventreeInstanceTitle() +@register.simple_tag() +def python_version(*args, **kwargs): + """ + Return the current python version + """ + return sys.version.split(' ')[0] + + @register.simple_tag() def inventree_version(*args, **kwargs): """ Return InvenTree version string """ diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 0f5f59d3a3..d606b12637 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -1,14 +1,19 @@ -from rest_framework import status +# -*- coding: utf-8 -*- + +import PIL from django.urls import reverse -from part.models import Part -from stock.models import StockItem -from company.models import Company +from rest_framework import status +from rest_framework.test import APIClient from InvenTree.api_tester import InvenTreeAPITestCase from InvenTree.status_codes import StockStatus +from part.models import Part, PartCategory +from stock.models import StockItem +from company.models import Company + class PartAPITest(InvenTreeAPITestCase): """ @@ -230,6 +235,18 @@ class PartAPITest(InvenTreeAPITestCase): response = self.client.get(url, data={'part': 10004}) self.assertEqual(len(response.data), 7) + # Try to post a new object (missing description) + response = self.client.post( + url, + data={ + 'part': 10000, + 'test_name': 'My very first test', + 'required': False, + } + ) + + self.assertEqual(response.status_code, 400) + # Try to post a new object (should succeed) response = self.client.post( url, @@ -237,6 +254,7 @@ class PartAPITest(InvenTreeAPITestCase): 'part': 10000, 'test_name': 'New Test', 'required': True, + 'description': 'a test description' }, format='json', ) @@ -248,7 +266,8 @@ class PartAPITest(InvenTreeAPITestCase): url, data={ 'part': 10004, - 'test_name': " newtest" + 'test_name': " newtest", + 'description': 'dafsdf', }, format='json', ) @@ -293,6 +312,239 @@ class PartAPITest(InvenTreeAPITestCase): self.assertEqual(len(data['results']), n) +class PartDetailTests(InvenTreeAPITestCase): + """ + Test that we can create / edit / delete Part objects via the API + """ + + fixtures = [ + 'category', + 'part', + 'location', + 'bom', + 'test_templates', + ] + + roles = [ + 'part.change', + 'part.add', + 'part.delete', + 'part_category.change', + 'part_category.add', + ] + + def setUp(self): + super().setUp() + + def test_part_operations(self): + n = Part.objects.count() + + # Create a part + response = self.client.post( + reverse('api-part-list'), + { + 'name': 'my test api part', + 'description': 'a part created with the API', + 'category': 1, + } + ) + + self.assertEqual(response.status_code, 201) + + pk = response.data['pk'] + + # Check that a new part has been added + self.assertEqual(Part.objects.count(), n + 1) + + part = Part.objects.get(pk=pk) + + self.assertEqual(part.name, 'my test api part') + + # Edit the part + url = reverse('api-part-detail', kwargs={'pk': pk}) + + # Let's change the name of the part + + response = self.client.patch(url, { + 'name': 'a new better name', + }) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['pk'], pk) + self.assertEqual(response.data['name'], 'a new better name') + + part = Part.objects.get(pk=pk) + + # Name has been altered + self.assertEqual(part.name, 'a new better name') + + # Part count should not have changed + self.assertEqual(Part.objects.count(), n + 1) + + # Now, try to set the name to the *same* value + # 2021-06-22 this test is to check that the "duplicate part" checks don't do strange things + response = self.client.patch(url, { + 'name': 'a new better name', + }) + + self.assertEqual(response.status_code, 200) + + # Try to remove the part + response = self.client.delete(url) + + self.assertEqual(response.status_code, 204) + + # Part count should have reduced + self.assertEqual(Part.objects.count(), n) + + def test_duplicates(self): + """ + Check that trying to create 'duplicate' parts results in errors + """ + + # Create a part + response = self.client.post(reverse('api-part-list'), { + 'name': 'part', + 'description': 'description', + 'IPN': 'IPN-123', + 'category': 1, + 'revision': 'A', + }) + + self.assertEqual(response.status_code, 201) + + n = Part.objects.count() + + # Check that we cannot create a duplicate in a different category + response = self.client.post(reverse('api-part-list'), { + 'name': 'part', + 'description': 'description', + 'IPN': 'IPN-123', + 'category': 2, + 'revision': 'A', + }) + + self.assertEqual(response.status_code, 400) + + # Check that only 1 matching part exists + parts = Part.objects.filter( + name='part', + description='description', + IPN='IPN-123' + ) + + self.assertEqual(parts.count(), 1) + + # A new part should *not* have been created + self.assertEqual(Part.objects.count(), n) + + # But a different 'revision' *can* be created + response = self.client.post(reverse('api-part-list'), { + 'name': 'part', + 'description': 'description', + 'IPN': 'IPN-123', + 'category': 2, + 'revision': 'B', + }) + + self.assertEqual(response.status_code, 201) + self.assertEqual(Part.objects.count(), n + 1) + + # Now, check that we cannot *change* an existing part to conflict + pk = response.data['pk'] + + url = reverse('api-part-detail', kwargs={'pk': pk}) + + # Attempt to alter the revision code + response = self.client.patch( + url, + { + 'revision': 'A', + }, + format='json', + ) + + self.assertEqual(response.status_code, 400) + + # But we *can* change it to a unique revision code + response = self.client.patch( + url, + { + 'revision': 'C', + } + ) + + self.assertEqual(response.status_code, 200) + + def test_image_upload(self): + """ + Test that we can upload an image to the part API + """ + + self.assignRole('part.add') + + # Create a new part + response = self.client.post( + reverse('api-part-list'), + { + 'name': 'imagine', + 'description': 'All the people', + 'category': 1, + }, + expected_code=201 + ) + + pk = response.data['pk'] + + url = reverse('api-part-detail', kwargs={'pk': pk}) + + p = Part.objects.get(pk=pk) + + # Part should not have an image! + with self.assertRaises(ValueError): + print(p.image.file) + + # Create a custom APIClient for file uploads + # Ref: https://stackoverflow.com/questions/40453947/how-to-generate-a-file-upload-test-request-with-django-rest-frameworks-apireq + upload_client = APIClient() + upload_client.force_authenticate(user=self.user) + + # Try to upload a non-image file + with open('dummy_image.txt', 'w') as dummy_image: + dummy_image.write('hello world') + + with open('dummy_image.txt', 'rb') as dummy_image: + response = upload_client.patch( + url, + { + 'image': dummy_image, + }, + format='multipart', + ) + + self.assertEqual(response.status_code, 400) + + # Now try to upload a valid image file + img = PIL.Image.new('RGB', (128, 128), color='red') + img.save('dummy_image.jpg') + + with open('dummy_image.jpg', 'rb') as dummy_image: + response = upload_client.patch( + url, + { + 'image': dummy_image, + }, + format='multipart', + ) + + self.assertEqual(response.status_code, 200) + + # And now check that the image has been set + p = Part.objects.get(pk=pk) + + print("Image:", p.image.file) + + class PartAPIAggregationTest(InvenTreeAPITestCase): """ Tests to ensure that the various aggregation annotations are working correctly... @@ -319,6 +571,8 @@ class PartAPIAggregationTest(InvenTreeAPITestCase): # Add a new part self.part = Part.objects.create( name='Banana', + description='This is a banana', + category=PartCategory.objects.get(pk=1), ) # Create some stock items associated with the part diff --git a/InvenTree/part/test_param.py b/InvenTree/part/test_param.py index 4e6556e63d..85eea7ee57 100644 --- a/InvenTree/part/test_param.py +++ b/InvenTree/part/test_param.py @@ -23,7 +23,7 @@ class TestParams(TestCase): def test_str(self): t1 = PartParameterTemplate.objects.get(pk=1) - self.assertEquals(str(t1), 'Length (mm)') + self.assertEqual(str(t1), 'Length (mm)') p1 = PartParameter.objects.get(pk=1) self.assertEqual(str(p1), 'M2x4 LPHS : Length = 4mm') diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 2bc24c3a99..e30c80549f 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -11,7 +11,7 @@ from django.core.exceptions import ValidationError import os -from .models import Part, PartTestTemplate +from .models import Part, PartCategory, PartTestTemplate from .models import rename_part_image, match_part_names from .templatetags import inventree_extras @@ -78,6 +78,61 @@ class PartTest(TestCase): p = Part.objects.get(pk=100) self.assertEqual(str(p), "BOB | Bob | A2 - Can we build it?") + def test_duplicate(self): + """ + Test that we cannot create a "duplicate" Part + """ + + n = Part.objects.count() + + cat = PartCategory.objects.get(pk=1) + + Part.objects.create( + category=cat, + name='part', + description='description', + IPN='IPN', + revision='A', + ) + + self.assertEqual(Part.objects.count(), n + 1) + + part = Part( + category=cat, + name='part', + description='description', + IPN='IPN', + revision='A', + ) + + with self.assertRaises(ValidationError): + part.validate_unique() + + try: + part.save() + self.assertTrue(False) + except: + pass + + self.assertEqual(Part.objects.count(), n + 1) + + # But we should be able to create a part with a different revision + part_2 = Part.objects.create( + category=cat, + name='part', + description='description', + IPN='IPN', + revision='B', + ) + + self.assertEqual(Part.objects.count(), n + 2) + + # Now, check that we cannot *change* part_2 to conflict + part_2.revision = 'A' + + with self.assertRaises(ValidationError): + part_2.validate_unique() + def test_metadata(self): self.assertEqual(self.r1.name, 'R_2K2_0805') self.assertEqual(self.r1.get_absolute_url(), '/part/3/') @@ -277,21 +332,24 @@ class PartSettingsTest(TestCase): """ # Create a part - Part.objects.create(name='Hello', description='A thing', IPN='IPN123') + Part.objects.create(name='Hello', description='A thing', IPN='IPN123', revision='A') # Attempt to create a duplicate item (should fail) with self.assertRaises(ValidationError): - Part.objects.create(name='Hello', description='A thing', IPN='IPN123') + part = Part(name='Hello', description='A thing', IPN='IPN123', revision='A') + part.validate_unique() # Attempt to create item with duplicate IPN (should be allowed by default) Part.objects.create(name='Hello', description='A thing', IPN='IPN123', revision='B') # And attempt again with the same values (should fail) with self.assertRaises(ValidationError): - Part.objects.create(name='Hello', description='A thing', IPN='IPN123', revision='B') + part = Part(name='Hello', description='A thing', IPN='IPN123', revision='B') + part.validate_unique() # Now update the settings so duplicate IPN values are *not* allowed InvenTreeSetting.set_setting('PART_ALLOW_DUPLICATE_IPN', False, self.user) with self.assertRaises(ValidationError): - Part.objects.create(name='Hello', description='A thing', IPN='IPN123', revision='C') + part = Part(name='Hello', description='A thing', IPN='IPN123', revision='C') + part.full_clean() diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index c41f54c058..2f129dd30b 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -981,7 +981,7 @@ class PartPricingView(PartDetail): part = self.get_part() # Stock history if part.total_stock > 1: - ret = [] + price_history = [] stock = part.stock_entries(include_variants=False, in_stock=True) # .order_by('purchase_order__date') stock = stock.prefetch_related('purchase_order', 'supplier_part') @@ -1008,17 +1008,19 @@ class PartPricingView(PartDetail): line['date'] = stock_item.purchase_order.issue_date.strftime('%d.%m.%Y') else: line['date'] = stock_item.tracking_info.first().date.strftime('%d.%m.%Y') - ret.append(line) + price_history.append(line) - ctx['price_history'] = ret + ctx['price_history'] = price_history # BOM Information for Pie-Chart if part.has_bom: + # get internal price setting + use_internal = InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False) ctx_bom_parts = [] # iterate over all bom-items for item in part.bom_items.all(): ctx_item = {'name': str(item.sub_part)} - price, qty = item.sub_part.get_price_range(quantity), item.quantity + price, qty = item.sub_part.get_price_range(quantity, internal=use_internal), item.quantity price_min, price_max = 0, 0 if price: # check if price available diff --git a/InvenTree/stock/admin.py b/InvenTree/stock/admin.py index f32fa008a0..5f1b134966 100644 --- a/InvenTree/stock/admin.py +++ b/InvenTree/stock/admin.py @@ -44,6 +44,13 @@ class LocationResource(ModelResource): StockLocation.objects.rebuild() +class LocationInline(admin.TabularInline): + """ + Inline for sub-locations + """ + model = StockLocation + + class LocationAdmin(ImportExportModelAdmin): resource_class = LocationResource @@ -52,6 +59,10 @@ class LocationAdmin(ImportExportModelAdmin): search_fields = ('name', 'description') + inlines = [ + LocationInline, + ] + class StockItemResource(ModelResource): """ Class for managing StockItem data import/export """ diff --git a/InvenTree/stock/migrations/0061_auto_20210511_0911.py b/InvenTree/stock/migrations/0061_auto_20210511_0911.py index 0ab37250c8..ba0ecc5207 100644 --- a/InvenTree/stock/migrations/0061_auto_20210511_0911.py +++ b/InvenTree/stock/migrations/0061_auto_20210511_0911.py @@ -199,7 +199,8 @@ def update_history(apps, schema_editor): update_count += 1 - print(f"\n==========================\nUpdated {update_count} StockItemHistory entries") + if update_count > 0: + print(f"\n==========================\nUpdated {update_count} StockItemHistory entries") def reverse_update(apps, schema_editor): diff --git a/InvenTree/stock/migrations/0064_auto_20210621_1724.py b/InvenTree/stock/migrations/0064_auto_20210621_1724.py new file mode 100644 index 0000000000..361ad02c80 --- /dev/null +++ b/InvenTree/stock/migrations/0064_auto_20210621_1724.py @@ -0,0 +1,78 @@ +# Generated by Django 3.2.4 on 2021-06-21 07:24 + +from django.db import migrations + + +def extract_purchase_price(apps, schema_editor): + """ + Find instances of StockItem which do *not* have a purchase price set, + but which point to a PurchaseOrder where there *is* a purchase price set. + + Then, assign *that* purchase price to original StockItem. + + This is to address an issue where older versions of InvenTree + did not correctly copy purchase price information cross to the StockItem objects. + + Current InvenTree version (as of 2021-06-21) copy this information across correctly, + so this one-time data migration should suffice. + """ + + # Required database models + StockItem = apps.get_model('stock', 'stockitem') + PurchaseOrder = apps.get_model('order', 'purchaseorder') + PurchaseOrderLineItem = apps.get_model('order', 'purchaseorderlineitem') + Part = apps.get_model('part', 'part') + + # Find all the StockItem objects without a purchase_price which point to a PurchaseOrder + items = StockItem.objects.filter(purchase_price=None).exclude(purchase_order=None) + + if items.count() > 0: + print(f"Found {items.count()} stock items with missing purchase price information") + + update_count = 0 + + for item in items: + + part_id = item.part + + po = item.purchase_order + + # Look for a matching PurchaseOrderLineItem (with a price) + lines = PurchaseOrderLineItem.objects.filter(part__part=part_id, order=po) + + if lines.exists(): + + for line in lines: + if line.purchase_price is not None: + + # Copy pricing information across + item.purchase_price = line.purchase_price + item.purchases_price_currency = line.purchase_price_currency + + print(f"- Updating supplier price for {item.part.name} - {item.purchase_price} {item.purchase_price_currency}") + + update_count += 1 + + item.save() + + break + + if update_count > 0: + print(f"Updated pricing for {update_count} stock items") + +def reverse_operation(apps, schema_editor): + """ + DO NOTHING! + """ + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0063_auto_20210511_2343'), + ] + + operations = [ + migrations.RunPython(extract_purchase_price, reverse_code=reverse_operation) + ] diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index d60689ccef..a0b7e3403a 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -81,6 +81,7 @@ class StockItemSerializer(InvenTreeModelSerializer): 'belongs_to', 'build', 'customer', + 'purchase_order', 'sales_order', 'supplier_part', 'supplier_part__supplier', @@ -163,6 +164,10 @@ class StockItemSerializer(InvenTreeModelSerializer): purchase_price = serializers.SerializerMethodField() + purchase_order_reference = serializers.CharField(source='purchase_order.reference', read_only=True) + + sales_order_reference = serializers.CharField(source='sales_order.reference', read_only=True) + def get_purchase_price(self, obj): """ Return purchase_price (Money field) as string (includes currency) """ @@ -208,10 +213,13 @@ class StockItemSerializer(InvenTreeModelSerializer): 'packaging', 'part', 'part_detail', + 'purchase_order', + 'purchase_order_reference', 'pk', 'quantity', 'required_tests', 'sales_order', + 'sales_order_reference', 'serial', 'stale', 'status', diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index fa91177bf6..bf9d10590f 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -325,7 +325,7 @@ {{ item.purchase_order }} {% endif %} - {% if item.purchase_price %} + {% if item.purchase_price != None %} {% trans "Purchase Price" %} @@ -350,7 +350,12 @@ {% trans "Manufacturer" %} - {{ item.supplier_part.manufacturer_part.manufacturer.name }} + {% if item.supplier_part.manufacturer_part.manufacturer %} + {{ item.supplier_part.manufacturer_part.manufacturer.name }} + {% else %} + {% trans "No manufacturer set" %} + {% endif %} + diff --git a/InvenTree/templates/InvenTree/settings/part.html b/InvenTree/templates/InvenTree/settings/part.html index c49e0c86d6..eb9fa8ff51 100644 --- a/InvenTree/templates/InvenTree/settings/part.html +++ b/InvenTree/templates/InvenTree/settings/part.html @@ -20,6 +20,7 @@ {% include "InvenTree/settings/setting.html" with key="PART_ALLOW_DUPLICATE_IPN" %} {% include "InvenTree/settings/setting.html" with key="PART_ALLOW_EDIT_IPN" %} {% include "InvenTree/settings/setting.html" with key="PART_SHOW_QUANTITY_IN_FORMS" icon="fa-hashtag" %} + {% include "InvenTree/settings/setting.html" with key="PART_SHOW_PRICE_IN_FORMS" icon="fa-dollar-sign" %} {% include "InvenTree/settings/setting.html" with key="PART_RECENT_COUNT" icon="fa-clock" %} {% include "InvenTree/settings/setting.html" with key="PART_TEMPLATE" icon="fa-clone" %} diff --git a/InvenTree/templates/about.html b/InvenTree/templates/about.html index 7b023295d1..358d468ca8 100644 --- a/InvenTree/templates/about.html +++ b/InvenTree/templates/about.html @@ -34,6 +34,11 @@ {% trans "API Version" %} {% inventree_api_version %}{% include "clip.html" %} + + + {% trans "Python Version" %} + {% python_version %} + {% trans "Django Version" %} diff --git a/InvenTree/templates/js/build.js b/InvenTree/templates/js/build.js index e8af981817..3e5e438add 100644 --- a/InvenTree/templates/js/build.js +++ b/InvenTree/templates/js/build.js @@ -418,6 +418,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { sub_part_detail: true, sub_part_trackable: trackable, }, + disablePagination: true, formatNoMatches: function() { return '{% trans "No BOM items found" %}'; }, @@ -667,6 +668,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { { field: 'sub_part_detail.stock', title: '{% trans "Available" %}', + sortable: true, }, { field: 'allocated', @@ -686,14 +688,13 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { 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 qA = rowA.quantity; - var qB = rowB.quantity; - - qA *= output.quantity; - qB *= output.quantity; + var qA = requiredQuantity(rowA); + var qB = requiredQuantity(rowB); // Handle the case where both numerators are zero if ((aA == 0) && (aB == 0)) { @@ -713,6 +714,8 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { return (qA < qB) ? 1 : -1; } + if (progressA == progressB) return 0; + return (progressA < progressB) ? 1 : -1; } }, diff --git a/InvenTree/templates/js/company.js b/InvenTree/templates/js/company.js index be4b707466..078b40f4b9 100644 --- a/InvenTree/templates/js/company.js +++ b/InvenTree/templates/js/company.js @@ -126,7 +126,7 @@ function loadManufacturerPartTable(table, url, options) { queryParams: filters, name: 'manufacturerparts', groupBy: false, - formatNoMatches: function() { return "{% trans "No manufacturer parts found" %}"; }, + formatNoMatches: function() { return '{% trans "No manufacturer parts found" %}'; }, columns: [ { checkbox: true, @@ -199,6 +199,107 @@ function loadManufacturerPartTable(table, url, options) { } +function loadManufacturerPartParameterTable(table, url, options) { + /* + * Load table of ManufacturerPartParameter objects + */ + + var params = options.params || {}; + + // Load filters + var filters = loadTableFilters("manufacturer-part-parameters"); + + // Overwrite explicit parameters + for (var key in params) { + filters[key] = params[key]; + } + + // setupFilterList("manufacturer-part-parameters", $(table)); + + $(table).inventreeTable({ + url: url, + method: 'get', + original: params, + queryParams: filters, + name: 'manufacturerpartparameters', + groupBy: false, + formatNoMatches: function() { return '{% trans "No parameters found" %}'; }, + columns: [ + { + checkbox: true, + switchable: false, + visible: false, + }, + { + field: 'name', + title: '{% trans "Name" %}', + switchable: false, + sortable: true, + }, + { + field: 'value', + title: '{% trans "Value" %}', + switchable: false, + sortable: true, + }, + { + field: 'units', + title: '{% trans "Units" %}', + switchable: true, + sortable: true, + }, + { + field: 'actions', + title: '', + switchable: false, + sortable: false, + formatter: function(value, row) { + + var pk = row.pk; + + var html = `
`; + + html += makeIconButton('fa-edit icon-blue', 'button-parameter-edit', pk, '{% trans "Edit parameter" %}'); + html += makeIconButton('fa-trash-alt icon-red', 'button-parameter-delete', pk, '{% trans "Delete parameter" %}'); + + html += `
`; + + return html; + } + } + ], + onPostBody: function() { + // Setup callback functions + $(table).find('.button-parameter-edit').click(function() { + var pk = $(this).attr('pk'); + + launchModalForm( + `/manufacturer-part/parameter/${pk}/edit/`, + { + success: function() { + $(table).bootstrapTable('refresh'); + } + } + ); + + }); + $(table).find('.button-parameter-delete').click(function() { + var pk = $(this).attr('pk'); + + launchModalForm( + `/manufacturer-part/parameter/${pk}/delete/`, + { + success: function() { + $(table).bootstrapTable('refresh'); + } + } + ); + }); + } + }); +} + + function loadSupplierPartTable(table, url, options) { /* * Load supplier part table @@ -224,7 +325,7 @@ function loadSupplierPartTable(table, url, options) { queryParams: filters, name: 'supplierparts', groupBy: false, - formatNoMatches: function() { return "{% trans "No supplier parts found" %}"; }, + formatNoMatches: function() { return '{% trans "No supplier parts found" %}'; }, columns: [ { checkbox: true, @@ -260,7 +361,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'supplier', - title: "{% trans "Supplier" %}", + title: '{% trans "Supplier" %}', formatter: function(value, row, index, field) { if (value) { var name = row.supplier_detail.name; @@ -276,7 +377,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'SKU', - title: "{% trans "Supplier Part" %}", + title: '{% trans "Supplier Part" %}', formatter: function(value, row, index, field) { return renderLink(value, `/supplier-part/${row.pk}/`); } diff --git a/InvenTree/templates/js/part.js b/InvenTree/templates/js/part.js index 7331ec25e0..66174e2f15 100644 --- a/InvenTree/templates/js/part.js +++ b/InvenTree/templates/js/part.js @@ -447,6 +447,7 @@ function loadPartTable(table, url, options={}) { columns.push({ sortable: true, + sortName: 'category', field: 'category_detail', title: '{% trans "Category" %}', formatter: function(value, row, index, field) { diff --git a/InvenTree/templates/js/stock.js b/InvenTree/templates/js/stock.js index 4e992df67f..b557f0c327 100644 --- a/InvenTree/templates/js/stock.js +++ b/InvenTree/templates/js/stock.js @@ -179,27 +179,32 @@ function loadStockTestResultsTable(table, options) { var match = false; var override = false; + // Extract the simplified test key var key = item.key; // Attempt to associate this result with an existing test - tableData.forEach(function(row, index) { + for (var idx = 0; idx < tableData.length; idx++) { + + var row = tableData[idx]; if (key == row.key) { item.test_name = row.test_name; item.required = row.required; - match = true; - if (row.result == null) { item.parent = parent_node; - tableData[index] = item; + tableData[idx] = item; override = true; } else { item.parent = row.pk; } + + match = true; + + break; } - }); + } // No match could be found if (!match) { @@ -603,7 +608,6 @@ function loadStockTable(table, options) { // REJECTED if (row.status == {{ StockStatus.REJECTED }}) { - console.log("REJECTED - {{ StockStatus.REJECTED }}"); html += makeIconBadge('fa-times-circle icon-red', '{% trans "Stock item has been rejected" %}'); } // LOST @@ -660,6 +664,27 @@ function loadStockTable(table, options) { title: '{% trans "Last Updated" %}', sortable: true, }, + { + field: 'purchase_order', + title: '{% trans "Purchase Order" %}', + formatter: function(value, row) { + if (!value) { + return '-'; + } + + var link = `/order/purchase-order/${row.purchase_order}/`; + var text = `${row.purchase_order}`; + + if (row.purchase_order_reference) { + + var prefix = '{% settings_value "PURCHASEORDER_REFERENCE_PREFIX" %}'; + + text = prefix + row.purchase_order_reference; + } + + return renderLink(text, link); + } + }, { field: 'purchase_price', title: '{% trans "Purchase Price" %}', diff --git a/InvenTree/templates/js/tables.js b/InvenTree/templates/js/tables.js index 645e54fcbb..96eb3f8123 100644 --- a/InvenTree/templates/js/tables.js +++ b/InvenTree/templates/js/tables.js @@ -134,12 +134,14 @@ $.fn.inventreeTable = function(options) { var varName = tableName + '-pagesize'; // Pagingation options (can be server-side or client-side as specified by the caller) - options.pagination = true; - options.paginationVAlign = options.paginationVAlign || 'both'; - options.pageSize = inventreeLoad(varName, 25); - options.pageList = [25, 50, 100, 250, 'all']; - options.totalField = 'count'; - options.dataField = 'results'; + if (!options.disablePagination) { + options.pagination = true; + options.paginationVAlign = options.paginationVAlign || 'both'; + options.pageSize = inventreeLoad(varName, 25); + options.pageList = [25, 50, 100, 250, 'all']; + options.totalField = 'count'; + options.dataField = 'results'; + } // Extract query params var filters = options.queryParams || options.filters || {}; diff --git a/InvenTree/templates/two_column.html b/InvenTree/templates/two_column.html index 1eb1b5388e..c942bef1fa 100644 --- a/InvenTree/templates/two_column.html +++ b/InvenTree/templates/two_column.html @@ -43,6 +43,9 @@ {% endblock %} +{% block pre_content_panels %} +{% endblock %} + {% block content_panels %}
@@ -63,6 +66,9 @@
{% endblock %} +{% block post_content_panels %} +{% endblock %} + {% endblock %} {% block js_ready %} diff --git a/InvenTree/users/apps.py b/InvenTree/users/apps.py index a9f671895d..f6666e3a94 100644 --- a/InvenTree/users/apps.py +++ b/InvenTree/users/apps.py @@ -13,7 +13,7 @@ class UsersConfig(AppConfig): def ready(self): - if canAppAccessDatabase(): + if canAppAccessDatabase(allow_test=True): try: self.assign_permissions() diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 0902b04ccd..2763ba0e10 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -85,6 +85,7 @@ class RuleSet(models.Model): 'part_partstar', 'company_supplierpart', 'company_manufacturerpart', + 'company_manufacturerpartparameter', ], 'stock_location': [ 'stock_stocklocation', @@ -116,6 +117,8 @@ class RuleSet(models.Model): 'order_purchaseorderattachment', 'order_purchaseorderlineitem', 'company_supplierpart', + 'company_manufacturerpart', + 'company_manufacturerpartparameter', ], 'sales_order': [ 'company_company', @@ -273,7 +276,7 @@ def update_group_roles(group, debug=False): """ - if not canAppAccessDatabase(): + if not canAppAccessDatabase(allow_test=True): return # List of permissions already associated with this group diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000000..90fb027a62 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,23 @@ +## Release Checklist + +Checklist of steps to perform at each code release + +### Update Version String + +Update `INVENTREE_SW_VERSION` in [version.py](https://github.com/inventree/InvenTree/blob/master/InvenTree/InvenTree/version.py) + +### Increment API Version + +If the API has changed, ensure that the API version number is incremented. + +### Translation Files + +Merge the crowdin translation updates into master branch + +### Documentation Release + +Create new release for the [inventree documentation](https://github.com/inventree/inventree-docs) + +### Python Library Release + +Create new release for the [inventree python library](https://github.com/inventree/inventree-python) diff --git a/tasks.py b/tasks.py index 3c4a2175e1..b78a135b08 100644 --- a/tasks.py +++ b/tasks.py @@ -251,12 +251,15 @@ def content_excludes(): "contenttypes", "sessions.session", "auth.permission", + "authtoken.token", "error_report.error", "admin.logentry", "django_q.schedule", "django_q.task", "django_q.ormq", "users.owner", + "exchange.rate", + "exchange.exchangebackend", ] output = "" @@ -362,6 +365,21 @@ def import_records(c, filename='data.json'): print("Data import completed") + +@task +def delete_data(c, force=False): + """ + Delete all database records! + + Warning: This will REALLY delete all records in the database!! + """ + + if force: + manage(c, 'flush --noinput') + else: + manage(c, 'flush') + + @task(post=[rebuild]) def import_fixtures(c): """